ubuntu16.04 websocketd测试

前言

什么是WebSocket?

WebSocket 是一种网络通信协议, 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话。

与http有何差异?

HTTP 协议设计之初规定通信只能由客户端发起,然后由服务器返回查询结果。所以如果服务器端如果有连续的状态需要下发,那么就只能通过客户端不断的轮询了,这样的化,整个通信的过程的效率就会大打折扣。而WebSocket建立在TCP/IP协议之上的应用层协议,区别与http单向的通信,客户端和服务器可以实现真正的双向平等对话。

一、环境及工具

websocketd

一个WebSocket server可以使用任意的服务端编程语言来实现,只要该语言能实现基本的Berkeley sockets(伯克利套接字)。例如c(++)、Python、PHP、服务端JavaScript(node.js),这些语言都可以用来实现,这里我们选择了websocketd,具体关于websocketd的信息可以点击前面的超链接。

二、搭建测试环境

1. 下载websocketd
现在github下载对应环境版本的可执行文件:
websocketd-0.3.0-linux_amd64.zip

$ ll
total 7.1M
-rw-rw-r-- 1 peng peng 1.5K 12月 25  2017 CHANGES
-rw-rw-r-- 1 peng peng 1.3K 12月 25  2017 LICENSE
-rw-rw-r-- 1 peng peng 4.8K 12月 25  2017 README.md
-rwxrwxr-x 1 peng peng 7.1M 12月 25  2017 websocketd

2. 编写一个后台脚本

我主要实现一个功能就是打印一段话就OK!

#!/bin/bash
echo "Hello,I websocketd."
sleep 1
echo "My OS is ubuntu16.04."
sleep 1
  1. 编写一个测试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>
  1. 修改脚本权限
sudo chmod +x test.sh

三、测试

- 终端启动websocketd

./websocketd --port=8080 ./test.sh 
Mon, 12 Aug 2019 14:30:33 +0800 | INFO   | server     |  | Serving using application   : ./test.sh 
Mon, 12 Aug 2019 14:30:33 +0800 | INFO   | server     |  | Starting WebSocket server   : ws://TM1705:8080/

- 浏览器打开HTML文件

$ ./websocketd --port=8080 ./test.sh 
Mon, 12 Aug 2019 14:30:33 +0800 | INFO   | server     |  | Serving using application   : ./test.sh 
Mon, 12 Aug 2019 14:30:33 +0800 | INFO   | server     |  | Starting WebSocket server   : ws://TM1705:8080/
Mon, 12 Aug 2019 14:31:40 +0800 | ACCESS | session    | url:'http://localhost:8080/' id:'1565591500532840292' remote:'::1' command:'./test.sh' origin:'file://' | CONNECT
Mon, 12 Aug 2019 14:31:42 +0800 | ACCESS | session    | url:'http://localhost:8080/' id:'1565591500532840292' remote:'::1' command:'./test.sh' origin:'file://' pid:'16565' | DISCONNECT

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章