详解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控制台英汉汉英电子词典
Apr 23 Python
Python实现获取操作系统版本信息方法
Apr 08 Python
详解Python的Django框架中的中间件
Jul 24 Python
玩转python爬虫之URLError异常处理
Feb 17 Python
python中将一个全部为int的list 转化为str的list方法
Apr 09 Python
Python使用sklearn实现的各种回归算法示例
Jul 04 Python
关于Flask项目无法使用公网IP访问的解决方式
Nov 19 Python
python定间隔取点(np.linspace)的实现
Nov 27 Python
关于tensorflow的几种参数初始化方法小结
Jan 04 Python
使用TensorFlow对图像进行随机旋转的实现示例
Jan 20 Python
python图形开发GUI库wxpython使用方法详解
Feb 14 Python
Pytorch中的数据集划分&正则化方法
May 27 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
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
在php中设置session用memcache来存储的方法总结
2016/01/14 PHP
js鼠标左右键 键盘值小结
2010/06/11 Javascript
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
jquery 单引号和双引号的区别及使用注意
2013/07/31 Javascript
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
JS简单实现元素复制示例附图
2013/11/19 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
Nodejs中获取当前函数被调用的行数及文件名详解
2018/12/12 NodeJs
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
Python决策树和随机森林算法实例详解
2018/01/30 Python
Python变量赋值的秘密分享
2018/04/03 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
python 爬取百度文库并下载(免费文章限定)
2020/12/04 Python
CSS3中的content属性使用示例
2015/07/20 HTML / CSS
Internet体系结构
2014/12/21 面试题
几道Java和数据库的面试题
2013/05/30 面试题
交通专业个人自荐信格式
2013/09/23 职场文书
学生会主席演讲稿
2014/04/25 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
学校计划生育责任书
2015/05/09 职场文书
文明上网主题班会
2015/08/14 职场文书
爱岗敬业先进典型事迹材料(2016推荐版)
2016/02/26 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL
Pytest中skip和skipif的具体使用方法
2021/06/30 Python
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL
MySQL数据库优化之通过索引解决SQL性能问题
2022/04/10 MySQL
Mysql 文件配置解析介绍
2022/05/06 MySQL