基于Websocket的websocketd
WebSocket是什么
WebSocket是HTML5下面的一种技术,设计出来的目的就是要取代轮询和 Comet 技术,使客户端浏览器具备像 C/S 架构下桌面系统的实时通讯能力。 浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。因为 WebSocket 连接本质上就是一个 TCP 连接,所以在数据传输的稳定性和数据传输量的大小方面,和轮询以及 Comet 技术比较,具有很大的性能优势。
简单的说这就是一个可以通过web来访问的socket协议。
具体可参考以下:
https://www.websocket.org/
https://developer.mozilla.org/en-US/docs/WebSockets
websocketd是什么
websocketd是一个简单的websocket服务Server,运行在命令行方式下,可以通过websocketd和已经有程序进行交互。
你可以写一个程序通过读写STDIN和STDOUT来和websocketd交互。因为是标准的读写接口,所以你的程序可以使用任何语言来处理。
这个程序的项目地址如下:
https://github.com/joewalnes/websocketd
websocketd 10秒教程
1.下载并安装websocketd
其实就是把websocketd下载到本地任何目录,反正你知道运行方式就可以,方便的话你可以放到
/usr/local/bin
目录下。直接在项目地址下载最新的就可以了。
2.写一个程序把数据显示到STDOUT
你可以用任何语言。
例子用了最简单的sh。
count.sh:
#!/bin/bash
# Count from 1 to 10, pausing for a second between each iteration.
for COUNT in $(seq 1 10); do
echo $COUNT
sleep 1
done
记得让他变成可执行文件:
$ chmod +x ./count.sh
3.启动websocketd server
$ websocketd --port=8080 ./count.sh
4.用javascript写一个客户端来交互
count.html:
<!DOCTYPE html>
<pre id="log"></pre>
<script>
// helper function: log message to screen
function log(msg) {
document.getElementById('log').textContent += msg + '\n';
}
// setup websocket with callbacks
var ws = new WebSocket('ws://localhost:8080/');
ws.onopen = function() {
log('CONNECT');
};
ws.onclose = function() {
log('DISCONNECT');
};
ws.onmessage = function(event) {
log('MESSAGE: ' + event.data);
};
</script>
很简答,建立连接,然后接收消息,当然你也可以发送消息。
5.websocket的常用API
onopen
onerror
onclose
onmessage
send
备注: websocketd --port=8080 [执行指定程序] 例如: php count.php