当前位置: 代码迷 >> 综合 >> C# WebSocket服务端实现
  详细解决方案

C# WebSocket服务端实现

热度:62   发布时间:2024-02-07 18:33:56.0

利用WebSocketSharp开源websocket-sharp.clone库实现websocket服务端

建一个wpf测试工程。

using WebSocketSharp;
using WebSocketSharp.Server;

    public class ServerSharp : WebSocketBehavior{int count = 0;protected override Task OnOpen(){count++;Task tk = new Task(() => {});tk.Start();return tk;}protected override Task OnClose(CloseEventArgs e){Task tk = new Task(() => {});tk.Start();return tk;}protected override Task OnMessage(MessageEventArgs e){Task tk = new Task(() => {Send("receive succ:" + e.Text.ReadToEnd());});tk.Start();return tk;}}

启动服务端:

    /// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}WebSocketServer wssv;void StartWebSocket(string Ip){wssv = new WebSocketServer(IPAddress.Parse(this.textBox.Text), 9999);wssv.AddWebSocketService<ServerSharp>("/Server");wssv.Start();if (wssv.IsListening){listBox.Items.Add(string.Format("Listening on port {0}, and providing WebSocket services:", wssv.Port));foreach (var path in wssv.WebSocketServices.Paths)listBox.Items.Add(string.Format("- {0}", path));}}private void button_Click(object sender, RoutedEventArgs e){StartWebSocket(this.textBox.Text);}//发送private void button1_Click(object sender, RoutedEventArgs e){//wssv            wssv.WebSocketServices.Broadcast(this.textBox1.Text);}}