相信大家对WebSocket 有所了解,这里就不对WebSocket 进行介绍了 ,直接上菜!
.net core 或 .net 5.0 ,本人用的是 .net 5.0的开发环境,引用下面两个包

本人新建的是窗体控件,窗体代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WebSocketSharp.Server;
namespace websocket09
{
    public partial class Form1 : Form
    {
        private WebSocketServer wssv;
        public Form1()
        {
            InitializeComponent();
            wssv = new WebSocketServer(6690);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            wssv.AddWebSocketService<Add>("/add");
            if (wssv.IsListening == true) 
            {
                showMassage("服务已经成功,无需再次启动!");
                return;
            }
            wssv.Start();
            showMassage("服务启动成功!");
        }
        private void button2_Click(object sender, EventArgs e)
        {
            if (wssv.IsListening == false)
            {
                showMassage("服务已经关闭,不能发送消息!");
                return;
            }
            var tt = wssv.WebSocketServices.Hosts.ToList();
            tt[0].Sessions.SendTo(this.textBox2.Text, tt[0].Sessions.IDs.ToList()[0]);
        }
        private void button3_Click(object sender, EventArgs e)
        {
            if (wssv.IsListening == false)
            {
                showMassage("服务已经关闭,无需再次关闭!");
                return;
            }
            wssv.Stop();
            showMassage("服务已经关闭!");
        }
        //展示获取的消息
        public void showMassage(string showstr) {
            this.textBox1.Text = this.textBox1.Text + "\r\n" +"获取客户端消息! " +showstr;
        } 
    }
}
以及新建一个类 add 对应的是,websocket的路径,
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WebSocketSharp;
using WebSocketSharp.Server;
namespace websocket09
{
    class Add : WebSocketBehavior
    {
        protected override void OnOpen()
        {
            Console.WriteLine("Connection Open");
            base.OnOpen();
        }
        protected override void OnMessage(MessageEventArgs e)
        {
            var data = e.Data;
            //if (TestJson(data))
            //{
            //    var param = JToken.Parse(data);
            //    if (param["a"] != null && param["b"] != null)
            //    {
            //        var a = param["a"].ToObject<int>();
            //        var b = param["b"].ToObject<int>();
            //        Send(JsonConvert.SerializeObject(new { code = 200, msg = "result is " + (a + b) }));
            //        Task.Factory.StartNew(() => {
            //            Task.Delay(10000).Wait();
            //            Send(JsonConvert.SerializeObject(new { code = 200, msg = "I just to tell you, the connection is different from http, i still alive and could send message to you." }));
            //        });
            //    }
            //}
            //else
            //{
            //    Send(JsonConvert.SerializeObject(new { code = 400, msg = "request is not a json string." }));
            //}
        }
        protected override void OnClose(CloseEventArgs e)
        {
            Console.WriteLine("Connection Closed");
            base.OnClose(e);
        }
        protected override void OnError(ErrorEventArgs e)
        {
            //Console.WriteLine("Error: " + e.Message);
            base.OnError(e);
        }
        private static bool TestJson(string json)
        {
            try
            {
                JToken.Parse(json);
                return true;
            }
            catch (JsonReaderException ex)
            {
                Console.WriteLine(ex);
                return false;
            }
        }
    }
}

通过上面代码添加对应的路径信息,然后书写webscket前端对应的代码,如下:
展示效果如图下:
后端:

客户端;

重点 重点 重点 需要了解websocket客户端与服务端的对应关系:
 
当两个客户端跟同一个个路径建立连接的时候,session.IDs 中会产生与之对于应的 唯一 id,用户可以通过该id对 单个客户端进行传值。
原文:https://www.cnblogs.com/shuangxingxitong/p/14600652.html