详解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的Template使用指南
Sep 11 Python
python实现将html表格转换成CSV文件的方法
Jun 28 Python
Python中scatter函数参数及用法详解
Nov 08 Python
Python中多个数组行合并及列合并的方法总结
Apr 12 Python
python自动截取需要区域,进行图像识别的方法
May 17 Python
Python函数和模块的使用总结
May 20 Python
python 通过视频url获取视频的宽高方式
Dec 10 Python
python获取网络图片方法及整理过程详解
Dec 20 Python
Python虚拟环境venv用法详解
May 25 Python
tensorflow模型转ncnn的操作方式
May 25 Python
python语音识别指南终极版(有这一篇足矣)
Sep 09 Python
Python实现Hash算法
Mar 18 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
Windows下的PHP5.0安装配制详解
2006/09/05 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
node.js中的require使用详解
2014/12/15 Javascript
JS实现窗口加载时模拟鼠标移动的方法
2015/06/03 Javascript
javascript日期操作详解(脚本之家整理)
2015/09/05 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
JS实现电商放大镜效果
2017/08/24 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
基于layui轮播图满屏是高度自适应的解决方法
2019/09/16 Javascript
基于javascript实现贪吃蛇小游戏
2019/11/25 Javascript
原生JS运动实现轮播图
2021/01/02 Javascript
windows下安装Python和pip终极图文教程
2017/03/05 Python
python实现折半查找和归并排序算法
2017/04/14 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
Python实现快速计算词频功能示例
2018/06/25 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
python获取Pandas列名的几种方法
2019/08/07 Python
Python logging设置和logger解析
2019/08/28 Python
Django 项目通过加载不同env文件来区分不同环境
2020/02/17 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
LN-CC中国:高端男装和女装的奢侈时尚目的地
2019/09/14 全球购物
俄罗斯鲜花递送:AMF
2020/04/24 全球购物
银行见习期自我鉴定
2014/01/29 职场文书
《称象》教学反思
2014/04/25 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
2014年个人思想工作总结
2014/11/27 职场文书
国博复兴之路观后感
2015/06/02 职场文书
请假条应该怎么写?
2019/06/24 职场文书
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技