基於websocket-sharp實現客戶端與服務器端數據交互的小Demo


1.服務器端實現如下

        static void Main(string[] args)
        {
            //1.創建WebSocketServer實例
            var wssv = new WebSocketServer(9191);
            wssv.Log.Level = LogLevel.Trace;
            //2.添加WebSocket服務
            wssv.AddWebSocketService<Echo>("/Echo");
            //3.開啟
            wssv.Start();
            //4.監聽
            if (wssv.IsListening)
            {
                Console.WriteLine("Listening on port {0}, and providing WebSocket services:", wssv.Port);
                foreach (var path in wssv.WebSocketServices.Paths)
                    Console.WriteLine("- {0}", path);
            }

            Console.WriteLine("\nPress Enter q to stop the server...");
            //string str=Console.ReadLine();
            while (Console.ReadLine() != "q")
            {
                continue;
            }
            //關閉
            wssv.Stop();
        }

2.Echo服務實現如下

    public class Echo : WebSocketBehavior
    {
     //OnMessage接收前端傳入的數據並進行相應的處理
protected override void OnMessage(MessageEventArgs e) { var models = e.Data; //使用newtonsoft.json來處理前端傳進來的Json數據 JObject jo = (JObject)JsonConvert.DeserializeObject(e.Data); string name = jo["Name"].ToString(); string msg = jo["Msg"].ToString(); if (msg == "Login") {
          //Send將處理完的數據返回到前端 Send(
string.Format("\"{0}\" --> Connect OK!", name)); } else { Send(string.Format("\"{0}\" say: {1}", name,msg)); } } }

3.客戶端實現如下

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>WebSocketTest</title>
    <script type="text/javascript">

        var url = "ws://localhost:9191/Echo";
        var output;
        var websocket;

        function onLogin() {

            var name = document.getElementById("txtName").value;

            if (name.trim().length == 0) {
                alert("請先輸入用戶名");
                return;
            }
            
            websocket = new WebSocket(url);

            websocket.onopen = function () {

                var data = { "Name": name, "Msg": "Login" };
                var jsData = JSON.stringify(data);

                websocket.send(jsData);
                alert("Connect Request send.....")
            }

            websocket.onmessage = function (e) {
                onMessage(e);
            };
        }//初始化WebSocket連接

        function onMessage(event) {

            alert(event.data);
        }//接收服務器端發送的信息

        function sendMessage() {
            //var
            var name = document.getElementById("txtName").value;
            var msg = document.getElementById("txtArea").value;
            var data = { "Name": name, "Msg": msg };
            var jsData= JSON.stringify(data);
            websocket.send(jsData);

            websocket.onmessage = function (e) {
                onMessage(e);
            };
        }

    </script>
</head>
<body>
    <div>
        <span>Name</span><input type="text" value="" id="txtName" />
        <input type="button" value="Login" id="btn_login" onclick="onLogin()" /><br /><br />
        <textarea id="txtArea" style="width: 240px;"></textarea><br /><button id="SendData" onclick="sendMessage()">Send</button>
    </div>
</body>
</html>

4.結果如下

 

 

 

 

5.開源地址:https://github.com/sta/websocket-sharp


免責聲明!

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



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