详解python websocket获取实时数据的几种常见链接方式


Posted in Python onJuly 01, 2019

第一种, 使用create_connection链接,需要pip install websocket-client (此方法不建议使用,链接不稳定,容易断,并且连接很耗时)

import time
from websocket import create_connection

url = 'wss://i.cg.net/wi/ws'
while True: # 一直链接,直到连接上就退出循环
  time.sleep(2)
  try:
    ws = create_connection(url)
    print(ws)
    break
  except Exception as e:
    print('连接异常:', e)
    continue
while True: # 连接上,退出第一个循环之后,此循环用于一直获取数据
  ws.send('{"event":"subscribe", "channel":"btc_usdt.ticker"}')
  response = ws.recv()
  print(response)

第二种,运行效果很不错,很容易连接,获取数据的速度也挺快

import json
from ws4py.client.threadedclient import WebSocketClient


class CG_Client(WebSocketClient):

  def opened(self):
    req = '{"event":"subscribe", "channel":"eth_usdt.deep"}'
    self.send(req)

  def closed(self, code, reason=None):
    print("Closed down:", code, reason)

  def received_message(self, resp):
    resp = json.loads(str(resp))
    data = resp['data']
    if type(data) is dict:
      ask = data['asks'][0]
      print('Ask:', ask)
      bid = data['bids'][0]
      print('Bid:', bid)


if __name__ == '__main__':
  ws = None
  try:
    ws = CG_Client('wss://i.cg.net/wi/ws')
    ws.connect()
    ws.run_forever()
  except KeyboardInterrupt:
    ws.close()

第三种,其实和第一种差不多,只不过换种写法而已,运行效果不理想,连接耗时,并且容易断

import websocket

while True:
  ws = websocket.WebSocket()
  try:
    ws.connect("wss://i.cg.net/wi/ws")
    print(ws)
    break
  except Exception as e:
    print('异常:', e)
    continue
print('OK')
while True:
  req = '{"event":"subscribe", "channel":"btc_usdt.deep"}'
  ws.send(req)
  resp = ws.recv()
  print(resp)

第四种,运行效果也可以,run_forever里面有许多参数,需要自己设置

import websocket


def on_message(ws, message): # 服务器有数据更新时,主动推送过来的数据
  print(message)


def on_error(ws, error): # 程序报错时,就会触发on_error事件
  print(error)


def on_close(ws):
  print("Connection closed ……")


def on_open(ws): # 连接到服务器之后就会触发on_open事件,这里用于send数据
  req = '{"event":"subscribe", "channel":"btc_usdt.deep"}'
  print(req)
  ws.send(req)


if __name__ == "__main__":
  websocket.enableTrace(True)
  ws = websocket.WebSocketApp("wss://i.cg.net/wi/ws",
                on_message=on_message,
                on_error=on_error,
                on_close=on_close)
  ws.on_open = on_open
  ws.run_forever(ping_timeout=30)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的迭代器和生成器使用实例
Jan 14 Python
基于python时间处理方法(详解)
Aug 14 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
Aug 30 Python
python获取磁盘号下盘符步骤详解
Jun 19 Python
django中使用事务及接入支付宝支付功能
Sep 15 Python
windows python3安装Jupyter Notebooks教程
Apr 13 Python
python 使用事件对象asyncio.Event来同步协程的操作
May 04 Python
Python Django form 组件动态从数据库取choices数据实例
May 19 Python
python通用数据库操作工具 pydbclib的使用简介
Dec 21 Python
python绘图subplots函数使用模板的示例代码
Apr 30 Python
python本地文件服务器实例教程
May 02 Python
教你利用python实现企业微信发送消息
May 23 Python
使用python将mysql数据库的数据转换为json数据的方法
Jul 01 #Python
python字符串Intern机制详解
Jul 01 #Python
简单了解python单例模式的几种写法
Jul 01 #Python
python如何获取列表中每个元素的下标位置
Jul 01 #Python
Django自定义用户登录认证示例代码
Jun 30 #Python
Python中栈、队列与优先级队列的实现方法
Jun 30 #Python
Python中请不要再用re.compile了
Jun 30 #Python
You might like
纯真IP数据库的应用 IP地址转化成十进制
2009/06/14 PHP
ThinkPHP连接Oracle数据库
2016/04/22 PHP
Javascript 个人笔记(没有整理,很乱)
2007/07/07 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
JS中判断null、undefined与NaN的方法
2014/03/24 Javascript
引用其它js时如何同时处理多个window.onload事件
2014/09/02 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
JavaScript中Boolean对象的属性解析
2015/10/21 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
easyui validatebox验证
2016/04/29 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
微信小程序 页面跳转及数据传递详解
2017/03/14 Javascript
AngularJS与BootStrap模仿百度分页的示例代码
2018/05/23 Javascript
Vue隐藏显示、只读实例代码
2018/07/18 Javascript
webuploader分片上传的实现代码(前后端分离)
2018/09/10 Javascript
vue-cli 3.x 修改dist路径的方法
2018/09/19 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
[06:35]2014DOTA2国际邀请赛 老男孩梦圆西雅图中国军团世界最强
2014/07/22 DOTA
Python3多线程爬虫实例讲解代码
2018/01/05 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
12个Python程序员面试必备问题与答案(小结)
2019/06/24 Python
python django中8000端口被占用的解决
2019/12/17 Python
使用CSS3来绘制一个月食图案
2015/07/18 HTML / CSS
HTML5新增元素如何兼容旧浏览器有哪些方法
2014/05/09 HTML / CSS
html5摇一摇代码优化包括DeviceMotionEvent等等
2014/09/01 HTML / CSS
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
办公室文秘自我评价
2013/09/21 职场文书
小学捐书活动总结
2014/07/05 职场文书
关于上班时间调整的通知
2015/04/23 职场文书
讲座新闻稿
2015/07/18 职场文书
《三国志》赏析
2019/08/27 职场文书
Python字符串格式化方式
2022/04/07 Python