websocket可以把它當做是一個程序提供相應的服務的。
所以創建一個websocket首先要創建一個程序(服務)。所以我們可以用winform創建一個程序來啟動websocket程序。(當然也可以用其他的方式,反正能創建一個websocket服務就行)
1、首先要引用fleck插件
2、貼代碼
public static void Dosocket() { try { //存放連接服務器的socket對象 var allScokets = new List<IWebSocketConnection>(); var server = new WebSocketServer("ws://172.60.65.82:5555"); //創建webscoket服務端實例,到時用戶連接這個socket(地址和端口隨便填,不要沖突就行) server.Start(socket => { socket.OnOpen = () => { allScokets.Add(socket); //這是把每一個socket添加到allScokets中(表示當有一個頁面連接上這個socket的時候,就會多一個socket) }; //關閉鏈接 socket.OnClose = () => { allScokets.Remove(socket); //用戶斷開socket連接時,就把這個用戶的socket移除 }; //監聽發送數據 socket.OnMessage = message => //給用戶發送的消息 { foreach (IWebSocketConnection sockets in allScokets) { if (sockets.ConnectionInfo.Path.Equals($@"/?{message}")) //根據獲取得到的message做相應的操作 { sockets.Send(wareHouse.getLocationRecord(message)); } } }; }); } catch (Exception) { } }
這樣就創建完一個websocket了。
你可以把這段代碼放在一個winform程序中,winform啟動的時候啟動這個websocket。
(我的是web api程序。所以放在了routeConfig文件中,在程序啟動的時候回自動啟動這個websocket)
2、如何調用
<script> //連接websocket var ws = new WebSocket("ws://172.60.65.82:5555"); ws.onopen = function () { console.log("連接成功!") }; ws.onmessage = function (result) { console.log("獲取成功信息:" + result.data) }; ws.onerror = function (error) { console.log("獲取錯誤信息:" + error.data) }; ws.onclose = function () { console.log("連接關閉!") };//綁定 $("#zhanban").on("keypress", function () { if (event.keyCode == "13") { //發送websocket if (ws.readyState == WebSocket.OPEN) { ws.send("123456"); } else { console.log("還未連接websocket!") } } }) </script>
連接socket可以傳參數
var ws = new WebSocket("ws://172.60.65.82:5555?LW0601");
后台接收參數如上socket代碼所示:
socket.OnMessage = message => { foreach (IWebSocketConnection sockets in allScokets) { if (sockets.ConnectionInfo.Path.Equals($@"/?{message}")) { sockets.Send(wareHouse.getLocationRecord(message)); } } };
注意:websocket只有在部分的瀏覽器中有用,在一些舊的瀏覽器中是沒有用的。