详解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中操作字符串之startswith()方法的使用
May 20 Python
python访问mysql数据库的实现方法(2则示例)
Jan 06 Python
深入理解python中的闭包和装饰器
Jun 12 Python
Python利用Beautiful Soup模块搜索内容详解
Mar 29 Python
Python获取CPU、内存使用率以及网络使用状态代码
Feb 08 Python
基于Python列表解析(列表推导式)
Jun 23 Python
python批量修改图片后缀的方法(png到jpg)
Oct 25 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
Aug 12 Python
python实现KNN分类算法
Oct 16 Python
Python 解决相对路径问题:"No such file or directory"
Jun 05 Python
Pandas替换及部分替换(replace)实现流程详解
Oct 12 Python
python实现磁盘日志清理的示例
Nov 05 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
mysql建立外键
2006/11/25 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
详谈PHP编码转换问题
2015/07/28 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
增强的 JavaScript 的 trim 函数的代码
2007/08/13 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
让AJAX不依赖后端接口实现方案
2012/12/03 Javascript
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
2015/03/04 Javascript
Node.js 异步编程之 Callback介绍(一)
2015/03/30 Javascript
jQuery预加载图片常用方法
2015/06/15 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
jQuery图片切换动画效果
2017/02/28 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
2017/03/04 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
Vue实现PC端靠边悬浮球的代码
2020/05/09 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
利用python实现短信和电话提醒功能的例子
2019/08/08 Python
python-xpath获取html文档的部分内容
2020/03/06 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
DC Shoes俄罗斯官网:美国滑板鞋和服饰品牌
2020/08/19 全球购物
机电一体化专业应届本科生求职信
2013/09/27 职场文书
造型师求职自荐信
2013/09/27 职场文书
艺术应用与设计个人的自我评价
2013/11/23 职场文书
幼儿园运动会加油词
2014/02/14 职场文书
聚美优品的广告词
2014/03/14 职场文书
会计专业个人自我鉴定
2014/03/21 职场文书
学习雷锋精神演讲稿
2014/05/10 职场文书
奥巴马连任演讲稿
2014/05/15 职场文书
二手房购房意向书
2015/05/09 职场文书