详解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 相关文章推荐
Python3实现生成随机密码的方法
Aug 23 Python
浅谈python中的正则表达式(re模块)
Oct 17 Python
python2.6.6如何升级到python2.7.14
Apr 08 Python
对numpy中布尔型数组的处理方法详解
Apr 17 Python
python 实现批量xls文件转csv文件的方法
Oct 23 Python
pytorch 转换矩阵的维数位置方法
Dec 08 Python
自学python的建议和周期预算
Jan 30 Python
Python中print和return的作用及区别解析
May 05 Python
详解Python图像处理库Pillow常用使用方法
Sep 02 Python
Python内置方法实现字符串的秘钥加解密(推荐)
Dec 09 Python
在Sublime Editor中配置Python环境的详细教程
May 03 Python
pycharm 如何查看某一函数源码的快捷键
May 12 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中常用的预定义变量小结
2012/05/09 PHP
PHP中的生成XML文件的4种方法分享
2012/10/06 PHP
php字符串函数学习之substr()
2015/03/27 PHP
PHP数组操作类实例
2015/07/11 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
2015/12/02 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
2016/09/14 Javascript
easyui messager alert 三秒后自动关闭提示的实例
2016/11/07 Javascript
js实现以最简单的方式将数组元素添加到对象中的方法
2017/12/20 Javascript
使用Bootstrap4 + Vue2实现分页查询的示例代码
2017/12/21 Javascript
JS实现的抛物线运动效果示例
2018/01/30 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
[01:14]DOTA2 7.22版本新增神杖效果展示(智力英雄篇)
2019/05/29 DOTA
详解python开发环境搭建
2016/12/16 Python
Python中的 is 和 == 以及字符串驻留机制详解
2019/06/28 Python
Python with用法:自动关闭文件进程
2019/07/10 Python
对DJango视图(views)和模版(templates)的使用详解
2019/07/17 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
基于python实现计算两组数据P值
2020/07/10 Python
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
化工专业求职信
2014/07/01 职场文书
政府会议通知范文
2015/04/15 职场文书
不同意离婚上诉状
2015/05/23 职场文书
村主任当选感言
2015/08/01 职场文书
物业管理交接协议书
2016/03/24 职场文书