C# websocket类库Fleck学习

前端:可以用这个篇介绍的代码,详解JS WebSocket断开原因和心跳机制

后端:winform程序编译成控制台程序

using Fleck;
 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            StartWebSocket();
        }

       static List<IWebSocketConnection> allSockets = new List<IWebSocketConnection>();
        private static void StartWebSocket()
        {
            FleckLog.Level = LogLevel.Debug;
            var server = new WebSocketServer("ws://0.0.0.0:7181");
            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    Console.WriteLine("Open!");
                    allSockets.Add(socket);
                };
                socket.OnClose = () =>
                {
                    Console.WriteLine("Close!");
                    allSockets.Remove(socket);
                };
                socket.OnMessage = message =>
                {
                    Console.WriteLine(message);
                    allSockets.ToList().ForEach(s => s.Send("Echo: " + message));
                };
            });
        }

        /// <summary>
        /// 发消息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            foreach (var socket in allSockets.ToList())
            {
                if (socket.IsAvailable == true)
                {
                    socket.Send(textBox2.Text);
                }
            }
            textBox2.Text = "";
        }

        /// <summary>
        /// 关闭所有连接
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            //关闭与客户端的所有的连接
           foreach (var item in allSockets)
           {
               if (item != null)
               {
                   item.Close();
               }
           }
        }
    }
  • WebSocket和SocketIO、SignalR总结:WebSocket是H5提出的规范,仍然有浏览器不支持。SocketIO将WebSocket、AJAX和其它的通信方式全部封装成了统一的通信接口。WebSocket是SocketIO的一个子集。SignalR是微软出品的SocketIO。

posted on   anjun_xf  阅读(709)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2019-07-23 文件名中非法字符 统一替换为下划线(C#)

导航

TOP
点击右上角即可分享
微信分享提示