C#使用Fleck實(shí)現(xiàn)創(chuàng)建WebSocket服務(wù)器
寫(xiě)在前面
Fleck 是 C# 實(shí)現(xiàn)的 WebSocket 服務(wù)器,通過(guò) WebSocket API,瀏覽器和服務(wù)器只需要做一個(gè)握手的動(dòng)作,然后瀏覽器和服務(wù)器之間就形成了一條快速通道;兩者之間就可以直接雙工數(shù)據(jù)通訊,改變了原有的B/S模式。整個(gè)實(shí)現(xiàn)過(guò)程的代碼非常簡(jiǎn)單,分為服務(wù)端和客戶端兩部分,服務(wù)端用控制臺(tái),客戶端只有一個(gè)內(nèi)嵌js的html文件。
老規(guī)矩用NuGet安裝Fleck類庫(kù)。
代碼實(shí)現(xiàn)
服務(wù)端代碼
using Fleck; public class WebSocketServerDemo { public static void Main(string[] args) { var server = new WebSocketServer("ws://127.0.0.1:7181"); server.Start(socket => { socket.OnOpen = () => Console.WriteLine("Open!"); socket.OnClose = () => Console.WriteLine("Close!"); socket.OnMessage = message => { Console.WriteLine(message); socket.Send(message + " from server"); }; }); Console.WriteLine("Server Started"); Console.ReadLine(); } }
客戶端代碼
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>WebSocket Demo</title> <script type="text/javascript"> var start = function () { var inc = document.getElementById('incomming'); var wsImpl = window.WebSocket || window.MozWebSocket; var form = document.getElementById('sendForm'); var input = document.getElementById('sendText'); inc.innerHTML += "connecting to server ...<br/>"; // 創(chuàng)建新的websocket新連接端口為7181 window.ws = new wsImpl('ws://127.0.0.1:7181/'); // 當(dāng)數(shù)據(jù)從服務(wù)器服務(wù)中心發(fā)送后,繼續(xù)向下運(yùn)行過(guò)程 ws.onmessage = function (evt) { inc.innerHTML += evt.data + '<br/>'; }; // 當(dāng)鏈接對(duì)象找到服務(wù)端成功對(duì)接后,提示正常打開(kāi) ws.onopen = function () { inc.innerHTML += 'connection opened<br/>'; }; // 當(dāng)鏈接對(duì)象未找找到服務(wù)端成功對(duì)接后,提示打開(kāi)失敗,別切單項(xiàng)關(guān)閉 ws.onclose = function () { inc.innerHTML += 'connection closed<br/>'; } form.addEventListener('submit', function (e) { e.preventDefault(); var val = input.value; ws.send(val); input.value = ""; }); } window.onload = start; </script> </head> <body> <form id="sendForm"> <input id="sendText" placeholder="Text to send" /> </form> <pre id="incomming"></pre> </body> </html>
調(diào)用示例
先啟動(dòng)服務(wù)端,建立監(jiān)聽(tīng),等待客戶端的連接。
用瀏覽器打開(kāi)html 文件,這邊用的是Chrome:
到此這篇關(guān)于C#使用Fleck實(shí)現(xiàn)創(chuàng)建WebSocket服務(wù)器的文章就介紹到這了,更多相關(guān)C#創(chuàng)建WebSocket服務(wù)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#中實(shí)現(xiàn)輸入漢字獲取其拼音(漢字轉(zhuǎn)拼音)的2種方法
這篇文章主要介紹了C#中實(shí)現(xiàn)輸入漢字獲取其拼音(漢字轉(zhuǎn)拼音)的2種方法,本文分別給出了使用微軟語(yǔ)言包、手動(dòng)編碼實(shí)現(xiàn)兩種實(shí)現(xiàn)方式,需要的朋友可以參考下2015-01-01C#在復(fù)雜多線程環(huán)境下使用讀寫(xiě)鎖同步寫(xiě)入文件
這篇文章介紹了C#在復(fù)雜多線程環(huán)境下使用讀寫(xiě)鎖同步寫(xiě)入文件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04Unity Shader實(shí)現(xiàn)素描風(fēng)格的渲染
這篇文章主要為大家詳細(xì)介紹了Unity Shader實(shí)現(xiàn)素描風(fēng)格的渲染,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04