详解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基于multiprocessing的多进程创建方法
Jun 04 Python
在Django框架中编写Context处理器的方法
Jul 20 Python
分析python动态规划的递归、非递归实现
Mar 04 Python
python topN 取最大的N个数或最小的N个数方法
Jun 04 Python
Python中return self的用法详解
Jul 27 Python
python的concat等多种用法详解
Nov 28 Python
django多个APP的urls设置方法(views重复问题解决)
Jul 19 Python
pytorch方法测试详解——归一化(BatchNorm2d)
Jan 15 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
Mar 02 Python
浅谈Django前端后端值传递问题
Jul 15 Python
Python函数调用追踪实现代码
Nov 27 Python
使用python绘制分组对比柱状图
Apr 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
实用函数3
2007/11/08 PHP
PHP游戏编程25个脚本代码
2011/02/08 PHP
PHP Directory 函数的详解
2013/03/07 PHP
php对二维数组进行排序的简单实例
2013/12/19 PHP
分享自定义的几个PHP功能函数
2015/04/15 PHP
php字符串的替换,分割和连接方法
2016/05/23 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
PHP中检查isset()和!empty()函数的必要性
2019/02/13 PHP
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
Angular2实现自定义双向绑定属性
2017/03/22 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
2019/07/20 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
node事件循环和process模块实例分析
2020/02/14 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现字符串匹配算法代码示例
2017/12/05 Python
python如何创建TCP服务端和客户端
2018/08/26 Python
详解python tkinter教程-事件绑定
2019/03/28 Python
Python数据类型之Tuple元组实例详解
2019/05/08 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
台湾母婴用品购物网站:Infant婴之房
2018/06/15 全球购物
应届生程序员求职信
2013/11/05 职场文书
民生工程实施方案
2014/03/22 职场文书
纪律教育学习月活动总结
2014/08/27 职场文书
党员群众路线对照检查材料
2014/08/31 职场文书
民族学专业大学生职业规划范文:清晰未来的构想
2014/09/20 职场文书
追悼会答谢词
2015/01/05 职场文书
班主任高考寄语
2015/02/26 职场文书
行政复议决定书
2015/06/24 职场文书
行政处罚事先告知书
2015/07/01 职场文书
创业方案:赚钱的烧烤店该怎样做?
2019/07/05 职场文书