详解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 相关文章推荐
win7安装python生成随机数代码分享
Dec 27 Python
python开发之字符串string操作方法实例详解
Nov 12 Python
用Python shell简化开发
Aug 08 Python
pip指定python位置安装软件包的方法
Jul 12 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
Aug 05 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
python实现在多维数组中挑选符合条件的全部元素
Nov 26 Python
Python TCPServer 多线程多客户端通信的实现
Dec 31 Python
python json 递归打印所有json子节点信息的例子
Feb 27 Python
django orm模块中的 is_delete用法
May 20 Python
Python 数据的累加与统计的示例代码
Aug 03 Python
python获取字符串中的email
Mar 31 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 echo 输出字符串函数详解
2010/05/13 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
ie 调试javascript的工具
2009/04/29 Javascript
菜鸟javascript基础资料整理3 正则
2010/12/06 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
2015/11/17 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
js利用正则表达式检验输入内容是否为网址
2016/07/05 Javascript
AngularJs 常用的过滤器
2017/05/15 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
Vue实现商品分类菜单数量提示功能
2019/07/26 Javascript
js实现简易计算器功能
2019/10/18 Javascript
node.js文件操作系统实例详解
2019/11/05 Javascript
vue实现element表格里表头信息提示功能(推荐)
2019/11/20 Javascript
微信小程序实现图片压缩
2019/12/03 Javascript
nodejs制作小爬虫功能示例
2020/02/24 NodeJs
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
国内常用的js类库大全(CDN公共库)
2020/06/24 Javascript
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
[54:41]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VGJ.T VS paiN
2018/03/31 DOTA
python3.5 email实现发送邮件功能
2018/05/22 Python
Python的UTC时间转换讲解
2019/02/26 Python
使用Python来做一个屏幕录制工具的操作代码
2020/01/18 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
使用html5制作loading图的示例
2014/04/14 HTML / CSS
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
优秀教师获奖感言
2014/01/31 职场文书
电视购物广告词
2014/03/19 职场文书
运动会广播稿100字
2014/09/14 职场文书
2015年教师新年寄语
2014/12/08 职场文书
MySQL 1130异常,无法远程登录解决方案详解
2021/08/23 MySQL
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫