c#使用websocket


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只有在部分的瀏覽器中有用,在一些舊的瀏覽器中是沒有用的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM