详解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 装饰器功能以及函数参数使用介绍
Jan 27 Python
python中的函数用法入门教程
Sep 02 Python
Python版微信红包分配算法
May 04 Python
Python中数字以及算数运算符的相关使用
Oct 12 Python
Python教程之全局变量用法
Jun 27 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
May 16 Python
python实现下载pop3邮件保存到本地
Jun 19 Python
python利用thrift服务读取hbase数据的方法
Dec 27 Python
对python调用RPC接口的实例详解
Jan 03 Python
Django工程的分层结构详解
Jul 18 Python
Python内存映射文件读写方式
Apr 24 Python
pandas分批读取大数据集教程
Jun 06 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在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
XHProf报告字段含义的解析
2016/05/17 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
Javascript学习笔记4 Eval函数
2010/01/11 Javascript
jquery 3D球状导航的文章分类
2010/07/06 Javascript
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
利用js实现禁止复制文本信息
2015/06/03 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
Express与NodeJs创建服务器的两种方法
2017/02/06 NodeJs
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
React Native模块之Permissions权限申请的实例相机
2017/09/28 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
解决Layui 表格自适应高度的问题
2019/11/15 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
2020/04/14 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
如何在 ant 的table中实现图片的渲染操作
2020/10/28 Javascript
Python中关于字符串对象的一些基础知识
2015/04/08 Python
听歌识曲--用python实现一个音乐检索器的功能
2016/11/15 Python
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
Python使用graphviz画流程图过程解析
2020/03/31 Python
Python3内置函数chr和ord实现进制转换
2020/06/05 Python
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
瑰珀翠美国官网:Crabtree & Evelyn美国
2016/11/29 全球购物
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
不服从公司安排检讨书
2014/09/24 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
MySQL系列之四 SQL语法
2021/07/02 MySQL