详解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中实现字符串类型与字典类型相互转换的方法
Aug 18 Python
Python实现计算文件夹下.h和.cpp文件的总行数
Apr 23 Python
在Django的视图中使用form对象的方法
Jul 18 Python
Python中常用操作字符串的函数与方法总结
Feb 04 Python
python实现将汉字保存成文本的方法
Nov 16 Python
使用Python实现毫秒级抢单功能
Jun 06 Python
Django文件存储 默认存储系统解析
Aug 02 Python
django之自定义软删除Model的方法
Aug 14 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
Feb 15 Python
使用python实现微信小程序自动签到功能
Apr 27 Python
selenium+超级鹰实现模拟登录12306
Jan 24 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
Feb 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
PHP中几个常用的魔术常量
2012/02/23 PHP
深入apache配置文件httpd.conf的部分参数说明
2013/06/28 PHP
php用户注册页面利用js进行表单验证具体实例
2013/10/17 PHP
php递归法读取目录及文件的方法
2015/01/30 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
2015/11/11 PHP
location.href语句与火狐不兼容的问题
2010/07/04 Javascript
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
JavaScript之HTMLCollection接口代码
2011/04/27 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
2011/07/04 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
Jquery1.9.1源码分析系列(六)延时对象应用之jQuery.ready
2015/11/24 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
2020/11/25 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
webpack实现热更新(实施同步刷新)
2017/07/28 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
vue加载自定义的js文件方法
2018/03/13 Javascript
vue实现城市列表选择功能
2018/07/16 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
python 输出上个月的月末日期实例
2018/04/11 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
Python带动态参数功能的sqlite工具类
2018/05/26 Python
python format 格式化输出方法
2018/07/16 Python
Python2 Selenium元素定位的实现(8种)
2019/02/25 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
详解python破解zip文件密码的方法
2020/01/13 Python
数据库方面面试题
2012/04/22 面试题
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2013/09/10 面试题
《识字五》教学反思
2014/03/01 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
大学生作弊检讨书
2014/09/11 职场文书
java设计模式--七大原则详解
2021/07/21 Java/Android