详解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判断一个集合是否包含了另外一个集合中所有项的方法
Jun 30 Python
学习python之编写简单简单连接数据库并执行查询操作
Feb 27 Python
python中异常捕获方法详解
Mar 03 Python
TensorFlow损失函数专题详解
Apr 26 Python
使用Python读取二进制文件的实例讲解
Jul 09 Python
python在html中插入简单的代码并加上时间戳的方法
Oct 16 Python
python 字典 setdefault()和get()方法比较详解
Aug 07 Python
详解python中*号的用法
Oct 21 Python
python实现的分析并统计nginx日志数据功能示例
Dec 21 Python
Pytorch对Himmelblau函数的优化详解
Feb 29 Python
python中JWT用户认证的实现
May 18 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
Jun 01 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
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
2017/10/13 PHP
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
2012/12/25 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
浅谈Unicode与JavaScript的发展史
2015/01/19 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
每天一篇javascript学习小结(Date对象)
2015/11/13 Javascript
Angular2 路由问题修复详解
2017/03/01 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
详解JS浏览器事件循环机制
2019/03/27 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
基于python select.select模块通信的实例讲解
2017/09/21 Python
python之消除前缀重命名的方法
2018/10/21 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
详解anaconda离线安装pytorchGPU版
2020/09/08 Python
Python之字典对象的几种创建方法
2020/09/30 Python
详解如何在css中引入自定义字体(font-face)
2018/05/17 HTML / CSS
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
欧迪办公美国官网:Office Depot
2016/08/22 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
计算机专业自荐信
2013/10/14 职场文书
工业设计专业推荐信
2013/10/29 职场文书
半年思想汇报
2013/12/30 职场文书
竞选体育委员演讲稿
2014/04/26 职场文书
爱心捐书活动总结
2014/07/05 职场文书
领导班子对照检查材料
2014/09/22 职场文书
镇党委书记群众路线整改措施思想汇报
2014/10/13 职场文书
营销与策划实训报告
2014/11/05 职场文书
未中标通知书
2015/04/17 职场文书
2019年思想汇报
2019/06/20 职场文书