1. """ pip install ws4py """
  1. import json
  2. from ws4py.client.threadedclient import WebSocketClient
  3.  
  4. class CG_Client(WebSocketClient):
  5.  
  6. def opened(self):
  7. req = '{"event":"subscribe", "channel":"eth_usdt.deep"}'
  8. self.send(req)
  9.  
  10. def closed(self, code, reason=None):
  11. print("Closed down:", code, reason)
  12.  
  13. def received_message(self, resp):
  14. resp = json.loads(str(resp))
  15. data = resp['data']
  16. if type(data) is dict:
  17. ask = data['asks'][0]
  18. print('Ask:', ask)
  19. bid = data['bids'][0]
  20. print('Bid:', bid)
  21.  
  22. if __name__ == '__main__':
  23. ws = None
  24. try:
  25. ws = CG_Client('wss://i.cg.net/wi/ws')
  26. ws.connect()
  27. ws.run_forever()
  28. except KeyboardInterrupt:
  29. ws.close()

  下面介绍另一个比较通用的方法实现websocket:

requirements.txt

websocket_client==0.56.0
six==1.12.0

  1. pip install --no-index --ignore-installed --find-links=./dependency -r requirements.txt
    pip download -d ./dependency -r requirements.txt
  1. # coding=utf-8
    import ssl
    url="localhost:8016/official-website-backend/websocket?"
    import wave,os
    p="2019-05-06_11-42-06_8611.wav"
    path=os.path.join(os.getcwd(),p)
    files=wave.open(path,'rb')
    data=files.readframes(1024)
    print("data type is %s"%type(data))
    import json
    import websocket
  2.  
  3. def on_message(ws, message): # 服务器有数据更新时,主动推送过来的数据
    print(message)
  4.  
  5. def on_error(ws, error): # 程序报错时,就会触发on_error事件
    print(error)
  6.  
  7. def on_close(ws):
    print("Connection closed ……")
  8.  
  9. def on_open(ws): # 连接到服务器之后就会触发on_open事件,这里用于send数据
    req=data
    print("发送文件type: %s"%type(data))
    ws.send(req)
  10.  
  11. if __name__ == "__main__":
    websocket.enableTrace(True)
    ws = websocket.WebSocketApp(url,
    on_message=on_message,
    on_error=on_error,
    on_close=on_close)
    ws.on_open = on_open
    ws.on_message=on_message
    ws.on_error=on_error
    ws.on_close=on_close
    ws.run_forever(ping_timeout=30)

websocket python实现原理的更多相关文章

  1. Python/Django-Web原理(一)

    Python/Django-Web原理(一) websocket webSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML规范中被引用为TCP连接,作为基于TCP的套接字AP ...

  2. Python多线程原理与实现

    Date: 2019-06-04 Author: Sun Python多线程原理与实战 目的: (1)了解python线程执行原理 (2)掌握多线程编程与线程同步 (3)了解线程池的使用 1 线程基本 ...

  3. Python逆向(一)—— 前言及Python运行原理

    一.前言 最近在学习Python逆向相关,涉及到python字节码的阅读,编译及反汇编一些问题.经过长时间的学习有了一些眉目,为了方便大家交流,特地将学习过程整理,形成了这篇专题.专题对python逆 ...

  4. WebSocket是什么原理,为什么可以实现持久连接

    本文摘抄自知乎,原文标题:WebSocket 是什么原理?为什么可以实现持久连接? Websocket只是协议而已. 一.WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化, ...

  5. python生成器原理剖析

    python生成器原理剖析 函数的调用满足"后进先出"的原则,也就是说,最后被调用的函数应该第一个返回,函数的递归调用就是一个经典的例子.显然,内存中以"后进先出&quo ...

  6. WebSocket 是什么原理?为什么可以实现持久连接?

    https://www.zhihu.com/question/20215561   作者:Ovear链接:https://www.zhihu.com/question/20215561/answer/ ...

  7. Python字符串原理剖析------万恶的+号

    字符串原理剖析pyc文件,执行python代码时,如果导入了其他的.py文件,那么执行过程中会自动生成一个与其同名的.pyc文件,该文件就是python解释器变异之后产生的字节码 PS:代码经过编译可 ...

  8. Python盗号原理-代码实现截屏键盘记录远程发送(不要做坏事)

    这年头盗号的从出不穷,不是脱裤就是社工钓鱼.今天呢我们就以前面的几篇技术文章做铺垫,来讲一下python盗号的原理(学习用途,请勿用于违法犯罪),知己知彼方能百战不殆嘛. 脱裤我们就不多提了,无非就是 ...

  9. python: super原理

    super() 的入门使用 在类的继承中,如果重定义某个方法,该方法会覆盖父类的同名方法,但有时,我们希望能同时实现父类的功能,这时,我们就需要调用父类的方法了,可通过使用 super 来实现,比如: ...

随机推荐

  1. LeetCode DB: Department Highest Salary

    The Employee table holds all employees. Every employee has an Id, a salary, and there is also a colu ...

  2. 微信小程序传参数的几种方法

    1,navigator 跳转时 wxml页面(参数多时可用“&”) <navigator url='../index/index?id=1&name=aaa'></n ...

  3. Java 基础知识总结1

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.数据类型:  数据类型:1>.基本数据类型:1).数值型: 1}.整型类型(byte  8位   (by ...

  4. jquery 简单归纳 -- 前端知识

    jquery 什么是jQuery? jquery是轻量级的JavaScript库,核心是javascript,兼容css和各种浏览器,核心理念是写得少做得多(write less do more). ...

  5. css选取table元素的第一列

    table tr td:first-child

  6. JSP基本语法总结【1】(jsp工作原理,脚本元素,指令元素,动作元素)

    时隔半年,回头对jsp复习整理一下,温故而知新. jsp工作原理: jsp服务器管理jsp页面分两个阶段:转换阶段(translation phase)和执行阶段(execution phase). ...

  7. GridLayout和GridView的区别

    GridView是一种适配器布局,它的继承关系是ViewGroup-->AdapterView-->AbsListView-->GridView,他是从一个adapter中取出内容填 ...

  8. Hive Serde - CSV、TSV

    CSV hive-0.14.0内置支持CSV Serde,以前的版本需要引入第三方库的jar包(http://https://github.com/ogrodnek/csv-serde) 现在有个文本 ...

  9. Python+Selenium笔记(十六)屏幕截图

    (一) 方法 方法 简单说明 save_screenshot(filename)   获取当前屏幕截图并保存为指定文件 filename:路径/文件名 get_screenshot_as_base64 ...

  10. 【python】字典/dictionary操作

    字典(dictionary) 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值 key=>value 对用冒号:分割,每个键值对之间用逗号,分割,整个字典包括在花括号 {} 中 ...