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

在這裏插入圖片描述

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