详解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中的对象与类型
Dec 11 Python
python UNIX_TIMESTAMP时间处理方法分析
Apr 18 Python
Python 搭建Web站点之Web服务器网关接口
Nov 06 Python
基于ID3决策树算法的实现(Python版)
May 31 Python
Python语言描述KNN算法与Kd树
Dec 13 Python
python利用OpenCV2实现人脸检测
Apr 16 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
May 11 Python
如何在python字符串中输入纯粹的{}
Aug 22 Python
pyqt远程批量执行Linux命令程序的方法
Feb 14 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
Oct 24 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
Jan 28 Python
Python加密与解密模块hashlib与hmac
Jun 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
php使HTML标签自动补全闭合函数代码
2012/10/04 PHP
5种PHP创建数组的实例代码分享
2014/01/17 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
2014/05/10 PHP
PHP 接入支付宝即时到账功能
2016/09/18 PHP
checkbox 复选框不能为空
2009/07/11 Javascript
Dom操作之兼容技巧分享
2011/09/20 Javascript
js确定对象类型方法
2012/03/30 Javascript
JSON语法五大要素图文介绍
2012/12/04 Javascript
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
javascript cookie基础应用之记录用户名的方法
2016/09/20 Javascript
JS常用加密编码与算法实例总结
2016/12/22 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
JS 数组基本用法入门示例解析
2020/01/16 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
Python OS模块常用函数说明
2015/05/23 Python
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
Python实现获取前100组勾股数的方法示例
2018/05/04 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
Python定义一个函数的方法
2020/06/15 Python
瑜伽灵感珠宝:Satya Jewelry
2018/01/06 全球购物
英国亚马逊官方网站:Amazon.co.uk
2019/08/09 全球购物
高中生班主任评语
2014/04/25 职场文书
学校就业推荐信范文
2014/05/19 职场文书
公司试用期员工自我评价
2014/09/17 职场文书
永远是春天观后感
2015/06/12 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
《桂花雨》教学反思
2016/02/19 职场文书
《秋思》教学反思
2016/02/23 职场文书