详解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 相关文章推荐
Django日志模块logging的配置详解
Feb 14 Python
使用PIL(Python-Imaging)反转图像的颜色方法
Jan 24 Python
python 自定义装饰器实例详解
Jul 20 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
Jul 23 Python
Python facenet进行人脸识别测试过程解析
Aug 16 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
Nov 19 Python
关于Tensorflow分布式并行策略
Feb 03 Python
Django 自定义404 500等错误页面的实现
Mar 08 Python
解决python执行较大excel文件openpyxl慢问题
May 15 Python
python基于Kivy写一个图形桌面时钟程序
Jan 28 Python
Python 批量下载阴阳师网站壁纸
May 19 Python
python实现简单石头剪刀布游戏
Oct 24 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环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
php去除字符串中空字符的常用方法小结
2015/03/17 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
2015/04/03 PHP
PHPExcel笔记, mpdf导出
2016/05/03 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
jQuery Div中加载其他页面的实现代码
2009/02/27 Javascript
javascript 设计模式之单体模式 面向对象学习基础
2010/04/18 Javascript
js页面跳转常用的几种方式
2010/11/25 Javascript
重载toString实现JS HashMap分析
2011/03/13 Javascript
遍历DOM对象内的元素属性示例代码
2014/02/08 Javascript
JavaScript中的console.log()函数详细介绍
2014/12/29 Javascript
JavaScript中获取Radio被选中的值
2015/11/11 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
JS之获取样式的简单实现方法(推荐)
2016/09/13 Javascript
jQuery模拟完美实现经典FLASH导航动画效果【附demo源码下载】
2016/11/09 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
vue2里面ref的具体使用方法
2017/10/27 Javascript
原生JavaScript实现remove()和recover()功能示例
2018/07/24 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
关于vue 项目中浏览器跨域的配置问题
2020/11/10 Javascript
浅谈Python单向链表的实现
2015/12/24 Python
python正则表达式面试题解答
2020/04/28 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
Python Numpy,mask图像的生成详解
2020/02/19 Python
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
中间件分为哪几类
2016/09/18 面试题
高中物理教学反思
2014/02/08 职场文书
体育个人工作总结
2015/02/09 职场文书
活动宣传稿范文
2015/07/23 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书
python如何正确使用yield
2021/05/21 Python
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB