C#使用WebSocket與網(wǎng)頁(yè)實(shí)時(shí)通信的實(shí)現(xiàn)示例
目的:使用Fleck框架實(shí)現(xiàn)網(wǎng)頁(yè)與服務(wù)端實(shí)時(shí)通信
傳統(tǒng)的網(wǎng)站采用http方式與服務(wù)端通信,屬于請(qǐng)求響應(yīng)模式,如何讓網(wǎng)頁(yè)與服務(wù)器之間能使用TCP這種雙向通信方式實(shí)時(shí)交流,答案就是使用WebSocket技術(shù)。
Fleck框架的安裝方式:
1、使用NuGet包管理工具安裝
Install-Package Fleck -Version 1.2.0
2、下載Fleck源碼并編譯程序集供服務(wù)端引用
github地址:https://github.com/statianzo/Fleck/archive/refs/heads/master.zip
gitee地址:https://gitee.com/mylikekefu/Fleck/repository/archive/master.zip
直接在VS中打開項(xiàng)目,并生成fleck項(xiàng)目程序集
3、新建WebSocket服務(wù)端項(xiàng)目,命名WebSocketConsoleApp
4、引用程序集Fleck.dll
5、程序入口類編寫服務(wù)端代碼,如下所示:
static void Main(string[] args) { FleckLog.Level = LogLevel.Debug; var allSockets = new List<IWebSocketConnection>(); var server = new WebSocketServer("ws://192.168.3.3:50000"); server.Start(socket => { //客戶端連接上服務(wù)端,則在socket列表添加一個(gè)客戶端 socket.OnOpen = () => { Console.WriteLine("Open!"); allSockets.Add(socket); }; //客戶端離線,則從socket列表刪除這個(gè)客戶端 socket.OnClose = () => { Console.WriteLine("Close!"); allSockets.Remove(socket); }; socket.OnMessage = message => { Console.WriteLine(message); //給發(fā)送消息的客戶端回復(fù)一條消息 socket.Send("Echo:" + message); }); var input = Console.ReadLine(); //給所有客戶端發(fā)送消息 while(input!="exit") { foreach (var socket in allSockets.ToList()) { socket.Send(input); } input = Console.ReadLine(); } }
6、啟動(dòng)項(xiàng)目,打印如下信息,服務(wù)端啟動(dòng)成功。
7、新建客戶端,使用瀏覽器F12控制臺(tái)模擬websocket客戶端,代碼如下所示:
ws = new WebSocket("ws://192.168.3.3:50000"); ws.onopen = function() { ws.send('websocekt測(cè)試'); }; ws.onmessage = function(e) { alert("收到服務(wù)端的消息:" + e.data); };
打開兩個(gè)瀏覽器頁(yè)面,分別F12,控制臺(tái)中輸入以上代碼,表示新建了兩個(gè)客戶端,將會(huì)分別收到服務(wù)端回復(fù)的消息。
在其中一個(gè)客戶端輸入代碼:ws.send('xtt');發(fā)現(xiàn)只有這個(gè)客戶端收到了回復(fù)的消息。
查看服務(wù)端打印情況如下所示:
到此這篇關(guān)于C#使用WebSocket與網(wǎng)頁(yè)實(shí)時(shí)通信的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)C# WebSocket與網(wǎng)頁(yè)實(shí)時(shí)通信內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# 中文簡(jiǎn)體轉(zhuǎn)繁體實(shí)現(xiàn)代碼
C# 中文簡(jiǎn)體轉(zhuǎn)繁體實(shí)現(xiàn)代碼,需要的朋友可以參考一下2013-02-02Unity實(shí)現(xiàn)簡(jiǎn)易日志輸出功能
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)簡(jiǎn)易日志輸出功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09將ocx文件轉(zhuǎn)換成C#程序引用的DLL文件的辦法
將ocx文件轉(zhuǎn)換成C#程序引用的DLL文件的辦法,需要的朋友可以參考一下2013-03-03C#實(shí)現(xiàn)在啟動(dòng)目錄創(chuàng)建快捷方式的方法
這篇文章主要介紹了C#實(shí)現(xiàn)在啟動(dòng)目錄創(chuàng)建快捷方式的方法,涉及C#快捷方式的創(chuàng)建技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09C#訪問PostGreSQL數(shù)據(jù)庫(kù)的方法
這次的項(xiàng)目中的一個(gè)環(huán)節(jié)要求我把PostGreSQL數(shù)據(jù)取出來(lái),然后放到SqlServer里,再去處理分析。2013-04-04C#實(shí)現(xiàn)將一個(gè)矩陣分解為對(duì)稱矩陣與反稱矩陣之和的方法
這篇文章主要介紹了C#實(shí)現(xiàn)將一個(gè)矩陣分解為對(duì)稱矩陣與反稱矩陣之和的方法,較為詳細(xì)的分析了矩陣分解運(yùn)算的原理與C#實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-08-08