C# fleck websocket使用
生活随笔
收集整理的這篇文章主要介紹了
C# fleck websocket使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉載于:https://www.itspeeding.com/article/28
1、web頁面
1 <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
2 <head>
3 <meta charset="utf-8" />
4 <title>WebSocket測試</title>
5 <style>
6 .div1
7 {
8 height:200px;
9 width:200px;
10 border:1px solid blue;
11 margin:auto;
12 }
13 h4
14 {
15 margin:auto;
16 }
17 </style>
18 <script>
19 var webSocket = {};
20 //創建websockt
21 function CreateWebSocket() {
22 webSocket = new WebSocket("ws://127.0.0.1:30000");
23 webSocket.onopen = WebSokectOnOpen;
24 webSocket.onmessage = WebSocketOnMessage;
25 webSocket.onclose = WebSocketOnClose;
26 };
27
28 //建立連接事件
29 function WebSokectOnOpen() {
30 alert("已經打開連接!");
31 webSocket.Send("WebSocketCreate Success!");
32 };
33
34 //監聽事件
35 function WebSocketOnMessage(event) {
36 //監聽來自客戶端的數據
37 alert(event.data);
38 };
39
40 function WebSocketOnClose() {
41 //監聽來自客戶端的數據
42 alert('和服務器斷開連接');
43 };
44
45 //發送事件
46 function WebSocketSendMsg() {
47 //獲取text中的值
48 var text = document.getElementById("Text1").value;
49 //發送到服務器
50 webSocket.send(text);
51 };
52 </script>
53 </head>
54 <body οnlοad="CreateWebSocket()">
55 <div class="div1">
56 <h4>CSDN博客</h4>
57 <h4>By:LoveMiw</h4>
58 <input type="text" id="Text1" />
59 <input type="button" οnclick="WebSocketSendMsg()" value="發送數據" />
60 </div>
61 </body>
62 </html>
2、服務端C#代碼 Nuget添加Fleck的引用,可以創建一個web應用程序
1 //客戶端url以及其對應的Socket對象字典
2 IDictionary<string, IWebSocketConnection> dic_Sockets = new Dictionary<string, IWebSocketConnection>();
3 //創建
4
5 WebSocketServer server = new WebSocketServer("ws://0.0.0.0:30000");//監聽所有的的地址
6 //出錯后進行重啟
7 server.RestartAfterListenError = true;
8
9 //開始監聽
10 server.Start(socket =>
11 {
12 socket.OnOpen = () => //連接建立事件
13 {
14 //獲取客戶端網頁的url
15 string clientUrl = socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort;
16 dic_Sockets.Add(clientUrl, socket);
17 Console.WriteLine(DateTime.Now.ToString() + "|服務器:和客戶端網頁:" + clientUrl + " 建立WebSock連接!");
18 };
19 socket.OnClose = () => //連接關閉事件
20 {
21 string clientUrl = socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort;
22 //如果存在這個客戶端,那么對這個socket進行移除
23 if (dic_Sockets.ContainsKey(clientUrl))
24 {
25 //注:Fleck中有釋放
26 //關閉對象連接
27 //if (dic_Sockets[clientUrl] != null)
28 //{
29 //dic_Sockets[clientUrl].Close();
30 //}
31 dic_Sockets.Remove(clientUrl);
32 }
33 Console.WriteLine(DateTime.Now.ToString() + "|服務器:和客戶端網頁:" + clientUrl + " 斷開WebSock連接!");
34 };
35 socket.OnMessage = message => //接受客戶端網頁消息事件
36 {
37 string clientUrl = socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort;
38 Console.WriteLine(DateTime.Now.ToString() + "|服務器:【收到】來客戶端網頁:" + clientUrl + "的信息:\n" + message);
39 };
40 });
41
42 Console.ReadKey();
43 foreach (var item in dic_Sockets.Values)
44 {
45 if (item.IsAvailable == true)
46 {
47 item.Send("服務器消息:" + DateTime.Now.ToString());
48 }
49 }
50 Console.ReadKey();
51
52 //關閉與客戶端的所有的連接
53 foreach (var item in dic_Sockets.Values)
54 {
55 if (item != null)
56 {
57 item.Close();
58 }
59 }
60
61 Console.ReadKey();
總結
以上是生活随笔為你收集整理的C# fleck websocket使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DOS简介
- 下一篇: C#如何使用HttpClient对大文件