详解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使用wxpython开发简单记事本的方法
May 20 Python
Python基于递归算法实现的走迷宫问题
Aug 04 Python
pyqt5自定义信号实例解析
Jan 31 Python
浅谈PySpark SQL 相关知识介绍
Jun 14 Python
python图的深度优先和广度优先算法实例分析
Oct 26 Python
Django异步任务线程池实现原理
Dec 17 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
Jan 08 Python
关于pytorch中全连接神经网络搭建两种模式详解
Jan 14 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
Mar 30 Python
详解Python中如何将数据存储为json格式的文件
Nov 18 Python
Python实现疫情地图可视化
Feb 05 Python
Python爬虫爬取ts碎片视频+验证码登录功能
Feb 22 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
PHP字符串处理的10个简单方法
2010/06/30 PHP
PHP 实现代码复用的一个方法 traits新特性
2015/02/22 PHP
php通过修改header强制图片下载的方法
2015/03/24 PHP
PHP程序员必须知道的两种日志实例分析
2020/05/14 PHP
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
2012/02/03 Javascript
JavaScript实现文字与图片拖拽效果的方法
2015/02/16 Javascript
分享10个原生JavaScript技巧
2015/04/20 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
javascript的函数劫持浅析
2016/09/26 Javascript
jQuery事件对象总结
2016/10/17 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
JavaScript轻松创建级联函数的方法示例
2017/02/10 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
基于zepto.js实现登录界面
2017/10/09 Javascript
微信小程序progress组件使用详解
2018/01/31 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
Python六大开源框架对比
2015/10/19 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
python实现自动打卡的示例代码
2020/10/10 Python
详解HTML5中的标签
2015/06/19 HTML / CSS
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
《金子》教学反思
2014/04/13 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
单位委托书
2014/10/15 职场文书
2014年民警工作总结
2014/11/25 职场文书
个人典型事迹材料
2014/12/30 职场文书
邀请书格式范文
2015/02/02 职场文书
家装业务员岗位职责
2015/04/03 职场文书
安全员岗位职责范本
2015/04/11 职场文书
小学推普周活动总结
2015/05/07 职场文书