埋头工作
专职养娃

python后端实时通信技术python-socketio介绍 python-socketio入门介绍

Python-socketio其实是socket.io的一种python实现,其实在python中socketio还有一个叫[Githug]flask-socketio,看名字就能看得出来这个sockeio是和flask框架进行结合的,这篇文章对这个不做任何介绍了,因为在web框架上我们的首选是django,但是如果你自习去看flask-socketio的文档的话,你可以看出关于socketio的通信部分的语法都是一模一样的,区别大不。

一、socketio基本说明

Socket.io是一个WebSocket库,包括了客户端的js和服务器端的nodejs,它的目标是构建可以在不同浏览器和移动设备上使用的实时应用。它会自动根据浏览器从WebSocket、AJAX长轮询、Iframe流等等各种方式中选择最佳的方式来实现网络实时应用,非常方便和人性化,而且支持的浏览器最低达IE5.5,主要特点如下:

  • 实时分析:将数据推送到客户端,这些客户端会被表示为实时计数器,图表或日志客户。
  • 实时通信和聊天:只需几行代码便可写成一个Socket.IO的”Hello,World”聊天应用。
  • 二进制流传输:从1.0版本开始,Socket.IO支持任何形式的二进制文件传输,例如:图片,视频,音频等。
  • 文档合并:允许多个用户同时编辑一个文档,并且能够看到每个用户做出的修改。

socket.io是要求前后端必须配套使用的,如果你准备在前段使用socket.io来进行websocket通信,那么服务器端就必须使用socketio,否则websocket是建立不起来的。我们都知道在前段上是没得选择的,只能使用socket.io.js来进行实现,但是在后台的选择上我们可以采用多种方式,具体可以查看socket.io官网的说明。主要有下面的几种

而我们的选择就是python版本的实现,python-socketio。

二、Python-socketio概览

Python-socketio的文档写的相对比较详细,查看官方的文档内容,一定程度能够提前让自己有比较详尽的概念和了解,但是具体编码的时候建议还是看下github上的样例,感觉英文的官方文档虽然能看懂,但是理解上总感觉有偏差,还是直接看样例代码比较靠谱。

python-socketio因为只是一个实时通信的框架,在后台上还是要依托一个http server框架来进行运行,那么在官方的文档里面,提供了很多种的实现方式,比如tornado,uwsgi,gevent等等。也包括前面提到的flask,django这些web框架。

python-socketio的server端的服务器功能跟socket.io nodejs版本的功能没啥大的区别,都包含了连接,断开,消息发送,广播等等多种消息,但是在消息体上还是有一定的区别,这点需要注意,尤其是要将nodejs实现的socket.io替换为python-socketio的时候,尤其要注意。

nodejs上server端向前台发送消息可以直接这样写

sio.emit("eventname",arg1,arg2,arg3)

然后前端获取到的就是一个数组
["eventname",arg1,arg2,arg3]

但是在python-socketio中就不能这么写,这个可以看下源码的参数

def emit(self, event, data=None, to=None, room=None, skip_sid=None,
namespace=None, callback=None, **kwargs):

# 那么在写的时候就必须把所有要发送给client前段的字段进行打包,比如使用下面的方式

sio.emit("eventname",json.dumps([arg1,arg2,arg3])),

然后前端获取到的就是另外一个结构["eventname",[arg1,arg2,arg3]]

这样就能确保前段无感了。

其他地方几乎没有变化,直接替换即可。

赞(2) 打赏
本人经小丙张嘎纯手工打字生成,未经许可不得转载知识点滴:小丙张嘎blog » python后端实时通信技术python-socketio介绍
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏