一、搭建pywebsocket服务
1.下载pywebsocket:
git clone https://github.com/googlearchive/pywebsocket
这里将代码下载到了/usr/local/pywebsocket该目录,但git时会自动创建pywebsocket。所以这里就变成了两个相同的目录。由于比较懒,就懒得挪了。
2.安装pywebsocket
进入pywebsocket主目录中,输入以下命令:
python setup.py build
sudo python setup.py install
3.测试pywebsocket是否安装成功
首先进入子目录pywebsocket/mod_pywebsocket
sudo python standalone.py -p 81 -w ../example/
在example中有很多的py示例脚本。在js中可以做对接使用。接下来介绍如何测试js。
二、使用测试pywebsocket
直接上js脚本(这里对接的是echo_wsh.py脚本):
//这是初始化代码,用来建立websocket用的
var ws = new WebSocket("ws://192.168.0.105:81/echo");
//设置WebSocket回调函数(这些函数都是被动触发的,只有收到对应事件才会回调)
ws.onopen = function()
{
alert("建立连接");
};
ws.onmessage = function (evt)
{
var received_msg = evt.data;
alert("接收到数据:["+received_msg+"]");
};
ws.onclose = function()
{
alert("连接已关闭");
};
//这是用来发送的函数
ws.send("这是一个发送的数据包");
上面的就是js中的测试代码了,可以直接连接服务器进行测试。如果要看对应的python代码,可以在pywebsocket/example目录中查看对应脚本。例如:本文用到的echo_wsh.py。
注意:上面的初始化代码是不阻塞的,设置完回调直接就过了。当socket建立后会调用回调函数onopen。相反,关闭调用onclose。
三、在linux上创建pywebsocket服务
上面的搭建好的pywebsocket仅仅只是个脚本而已,每次都要手动启动。所以这里将其创建为系统服务,随系统自启动。
1.创建服务启动文件:
vim /usr/lib/systemd/system/pywebsocket.service
内容如下:
[Unit]
Description=websocket service
After=multi-user.target
[Service]
Type=idle
ExecStart=/usr/bin/python /usr/local/pywebsocket/pywebsocket/mod_pywebsocket/standalone.py -p 81 -w /home/WebSocketProject/
ExecStop=/bin/kill -15 $MAINPID
[Install]
WantedBy=multi-user.target
Description:服务描述,自己修改。
ExecStart:是启动命令行,所有路径都要用绝对路径,可以根据自己的路径做修改。
其他项不改。
建立好服务文件后就可以开始配置服务了,命令如下:
//更改文件权限
sudo chmod 644 /usr/lib/systemd/system/pywebsocket.service
//重新加载服务配置
systemctl daemon-reload
//设置为开机启动
systemctl enable pywebsocket.service
//启动服务
systemctl start pywebsocket.service
//显示所有服务状态
systemctl list-units --type=service