一、说明
WebSocket,HTTP协议的一部分,在原有的短连接或者说一问一答的基础上增加的长连接服务,算是补充。
可用来干什么?
在web客户端和Web服务器端建立长连接形式,类似于Socket的链接,可以任意收发信息。
开发过程
因项目需求使用python开发,因为Web端就是用Django开发的,所以。。。
-
python上开发WebSocket,网上查到的是使用dwebsocket库来开发,网上学习了一种使用方式,发现有很多异常无法处理,而且网上的样例实在匮乏,再加上我Web开发短板太多,或者对我而言理解它的使用方式太慢。综上,弃用
dwebsocket库样例连接 -
WebSocket在python上的另一种开发方式,直接使用Socket开发,我们很清楚的知道WebSocket是建立在HTTP上使用TCP协议做的开发,基于此我们完全可以使用Socket来进行WebSocket的开发,区别于C/S模式的开发在于WebSockt的协议上,需要遵循它的标准协议进行连接和通信。以下我将叙述使用该方式的开发过程
二、开发参考链接
非常感谢如下两个链接博客作者对我的帮助:
JetpropelledSnake21 :Python Web学习笔记之WebSocket通信过程与实现
详细说明了WebSocket协议使用Socket开发的过程,博客写的非常棒,但同时有一些细节确实困扰了我很长时间。
CoderFocus :原来你是这样的WebSocket
详细说明了通过底层抓包分析WebSocket的过程,解决了很多细节问题。
三、开发过程
3.1 连接
客户端程序如下
<script type="text/javascript">
var ws;
function startWS() {
//连接
console.log('will connect:', document.getElementById('Server_IP').innerHTML);
ws = new WebSocket('ws://' + document.getElementById('Server_IP').innerHTML + ':9913');
//9913为创建socket的端口号,可以和网页端口号不同
ws.onopen = function (msg) {
console.log('WebSocket opened');
};
ws.onmessage = function (message) {
//接收消息
console.log