详解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生成指定尺寸缩略图的示例
May 07 Python
python打开url并按指定块读取网页内容的方法
Apr 29 Python
Django返回json数据用法示例
Sep 18 Python
Python中字典和集合学习小结
Jul 07 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
Apr 01 Python
对Python3之方法的覆盖与super函数详解
Jun 26 Python
手写一个python迭代器过程详解
Aug 27 Python
matplotlib绘制多个子图(subplot)的方法
Dec 03 Python
使用python采集Excel表中某一格数据
May 14 Python
python爬虫把url链接编码成gbk2312格式过程解析
Jun 08 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 Python
python+selenium实现12306模拟登录的步骤
Jan 21 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存储过程调用实例代码
2013/02/03 PHP
基于php 随机数的深入理解
2013/06/05 PHP
理解PHP中的stdClass类
2014/04/18 PHP
php中strtotime函数性能分析
2016/11/20 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
JavaScript 保存数组到Cookie的代码
2010/04/14 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
微信小程序 轮播图swiper详解及实例(源码下载)
2017/01/11 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
webpack dll打包重复问题优化的解决
2018/10/10 Javascript
JavaScript显式数据类型转换详解
2019/03/18 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
vue axios封装httpjs,接口公用配置拦截操作
2020/08/11 Javascript
[02:58]献给西雅图的情书_高清
2014/05/29 DOTA
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
python实现图片变亮或者变暗的方法
2015/06/01 Python
python线程中同步锁详解
2018/04/27 Python
Django中间件实现拦截器的方法
2018/06/01 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
2019/08/02 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
基于plt.title无法显示中文的快速解决
2020/05/16 Python
Python 解析xml文件的示例
2020/09/29 Python
2014年毕业演讲稿范文
2014/05/13 职场文书
基层组织建设年活动总结
2015/05/09 职场文书
高中化学教学反思
2016/02/22 职场文书
Python爬虫基础讲解之请求
2021/05/13 Python
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers