详解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 30 Python
python实现文本去重且不打乱原本顺序
Jan 26 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
May 16 Python
Python基础语言学习笔记总结(精华)
Nov 14 Python
Python中dict和set的用法讲解
Mar 28 Python
使用Python正则表达式操作文本数据的方法
May 14 Python
python 随机森林算法及其优化详解
Jul 11 Python
django-csrf使用和禁用方式
Mar 13 Python
使用Python爬取弹出窗口信息的实例
Mar 14 Python
Expected conditions模块使用方法汇总代码解析
Aug 13 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 Python
Python max函数中key的用法及原理解析
Jun 26 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用户指南-cookies部分
2006/10/09 PHP
php at(@)符号的用法简介
2009/07/11 PHP
生成随机字符串和验证码的类的PHP实例
2013/12/24 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
javascript css styleFloat和cssFloat
2010/03/15 Javascript
jQuery bind事件使用详解
2011/05/05 Javascript
JS打印gridview实现原理及代码
2013/02/05 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
微信小程序生成二维码的示例代码
2019/03/29 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
JS实现星星海特效
2019/12/24 Javascript
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
[59:36]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第二场
2018/04/04 DOTA
[57:53]Secret vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
玩转python爬虫之URLError异常处理
2016/02/17 Python
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
Django集成CAS单点登录的方法示例
2019/06/10 Python
三步实现Django Paginator分页的方法
2019/06/11 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
详解canvas绘制多张图的排列顺序问题
2019/01/21 HTML / CSS
html5自定义video标签的海报与播放按钮功能
2019/12/04 HTML / CSS
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
英国网上电器商店:Electricshop
2020/03/15 全球购物
纪检干部现实表现材料
2014/08/21 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书