详解python websocket获取实时数据的几种常见链接方式
2019-07-01 09:24
2156 查看
第一种, 使用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)
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- $.ajax()方法从服务器获取json数据几种方式详解
- 通过WebSocket建立长链接实时获取数据
- $.ajax()方法从服务器获取json数据几种方式详解
- 后台获取 GridView 行数据的常见两种方式
- http get方式访问网站获取数据,2.3可以用,4.0链接不成功
- Javaweb获取表单数据的几种方式
- Java基础——从键盘(控制台)输入字符串(数据)的几种方式详解
- 从URL获取数据的几种方式
- Python3 urllib GET方式获取数据
- python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
- struts2获取前台数据的几种方式(持续更新)
- CakePHP中获取Request请求数据的几种方式
- Python抓取数据的几种方式
- 利用php从数据库中获取数据,将数据渲染到html页面上的几种方式
- Python中selenium+webdriver爬取数据时各种节点元素的获取方式
- WSWP(用python写爬虫)笔记二:实现链接获取和数据存储爬虫
- Hive的几种常见的数据导入方式
- 嵌入式测试中数据获取的几种方式
- Python全栈开发之5、几种常见的排序算法以及collections模块提供的数据结构
- SpringMVC(SSM)获取网页数据和传出数据的几种方式