網站首頁 編程語言 正文
目的:使用Fleck框架實現網頁與服務端實時通信
傳統的網站采用http方式與服務端通信,屬于請求響應模式,如何讓網頁與服務器之間能使用TCP這種雙向通信方式實時交流,答案就是使用WebSocket技術。
Fleck框架的安裝方式:
1、使用NuGet包管理工具安裝
Install-Package Fleck -Version 1.2.0
2、下載Fleck源碼并編譯程序集供服務端引用
github地址:https://github.com/statianzo/Fleck/archive/refs/heads/master.zip
gitee地址:https://gitee.com/mylikekefu/Fleck/repository/archive/master.zip
直接在VS中打開項目,并生成fleck項目程序集
3、新建WebSocket服務端項目,命名WebSocketConsoleApp
4、引用程序集Fleck.dll
5、程序入口類編寫服務端代碼,如下所示:
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 => {
//客戶端連接上服務端,則在socket列表添加一個客戶端
socket.OnOpen = () => {
Console.WriteLine("Open!");
allSockets.Add(socket);
};
//客戶端離線,則從socket列表刪除這個客戶端
socket.OnClose = () => {
Console.WriteLine("Close!");
allSockets.Remove(socket);
};
socket.OnMessage = message => {
Console.WriteLine(message);
//給發送消息的客戶端回復一條消息
socket.Send("Echo:" + message);
});
var input = Console.ReadLine();
//給所有客戶端發送消息
while(input!="exit")
{
foreach (var socket in allSockets.ToList())
{
socket.Send(input);
}
input = Console.ReadLine();
}
}
6、啟動項目,打印如下信息,服務端啟動成功。
7、新建客戶端,使用瀏覽器F12控制臺模擬websocket客戶端,代碼如下所示:
ws = new WebSocket("ws://192.168.3.3:50000");
ws.onopen = function() {
ws.send('websocekt測試');
};
ws.onmessage = function(e) {
alert("收到服務端的消息:" + e.data);
};
打開兩個瀏覽器頁面,分別F12,控制臺中輸入以上代碼,表示新建了兩個客戶端,將會分別收到服務端回復的消息。
在其中一個客戶端輸入代碼:ws.send('xtt');發現只有這個客戶端收到了回復的消息。
查看服務端打印情況如下所示:
原文鏈接:https://blog.csdn.net/dandingwangzi/article/details/126325089
相關推薦
- 2022-09-14 Android多渠道打包神器ProductFlavor詳解_Android
- 2022-04-25 利用Redis實現訪問次數限流的方法詳解_Redis
- 2022-10-07 C#如何實現調取釘釘考勤接口的功能_C#教程
- 2022-08-17 C語言超全面講解字符串函數_C 語言
- 2022-12-07 C語言如何求整數的位數及各位數字之和_C 語言
- 2022-05-22 LazyCaptcha自定義隨機驗證碼和字體的示例詳解_實用技巧
- 2022-05-21 基于Python實現Hash算法_python
- 2022-09-17 python生成requirements.txt文件的推薦方法_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支