在网络编程中,client和server会使用xx_socketio,必须要注意的一点就是sockio所使用的协议必须匹配
报错
[warnning]The client is using an unsupported version of the Socket.IO or Engine.IO protocols (further occurrences of this error will be logged with level INFO) #1432
所使用协议与常见socketio版本的对比
JavaScript Socket.IO version | Socket.IO protocol revision | Engine.IO protocol revision | python-socketio version |
---|---|---|---|
0.9.x | 1, 2 | 1, 2 | Not supported |
1.x and 2.x | 3, 4 | 3 | 4.x |
3.x | 5 | 4 | 5.x |
常见socketio
socket、socketio、flask-socketio、WebSocket的区别与联系
- socket 是通信的基础,并不是一个协议,Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族和UDP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
- WebSocket 是html5新增加的一种通信协议,可以类比于http协议。常见的应用方式如弹幕、web在线游戏。
- socketio 是基于socket连接后(并没有自己实现socket的链接而是复用了web框架或gevent、eventlet中的socket)对网络输入输出流的处理,封装了send、emit、namespace、asyncio 、订阅等接口,同时扩展使用了redis、rabbitmq消息队列的方式与其他进程通信。
- flask-socketio 是socketio对flask的适配,封装了emit、send和关于room的操作。
select的链接、发送等底层操作还是在flask中做的,socketio对其做了抽象。使用threading模式时并没有自己实现socket的链接而是复用了web框架的socket,也可以指定使用gevent和eventlet中的select多路复用已提高性能。socketIO_client
websocket-client
python-socketio
Flask-socketIO
Flask