C#的WebSocket的使用案例

 

文章目录

  • 前言
  • 一、WebSocket是什么?
  • 二、使用步骤
    • 1.服务端
    • 2.客户端
  • 总结

 


前言

WebSocket使用案例

使用包:WebSocketSharp-netstandard。可以通过NuGet管理程序添加哦。

 

一、Websocket是什么?

WebSocket是先通过Http进行一次握手,然后通过(全双工)TCP进行传输数据。话不多直接代码

二、使用步骤

1.服务端

两个类,一个WSocketl类,另一个WSocketHandle处理类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WebSocketSharp;
using WebSocketSharp.Server;

namespace WebSocketTest
{
    /// 
    /// 服务端
    /// 
  public  class WSocket
    {
        //WebSocket对象
        public WebSocketServer _socketServer = null;
        List webSocketServiceHosts;
        public delegate bool SendDatas(string sData);
        public  static event SendDatas SendDataEvent;
        public WSocket()
        {
            //实例化
            _socketServer = new WebSocketServer("ws://127.0.0.1:9988");
            //添加WebSocket的服务处理类
            _socketServer.AddWebSocketService("/wsRobot");
            WebSocketServiceManager wSocketServiceManager = _socketServer.WebSocketServices;
            webSocketServiceHosts = wSocketServiceManager.Hosts.ToList();
        }
       
        /// 
        /// 发送信息
        /// 
        /// 
        public void SendData(string Data)
        {
            //第一种触发方式发送
            // SendDataEvent?.Invoke(Data);
            //第二种获取到session会话对象发送
            var session = webSocketServiceHosts[0].Sessions;//获取到session会话对象
            var sessionIds = session.ActiveIDs;//获取会话的IDs
            foreach (var sessionId in sessionIds)
            {
                //发送
                session.SendToAsync(Data, sessionId, new Action(t =>
                {
                    if (!t)
                    {
                        Console.WriteLine("发送失败");
                    }
                }));
            }
        }
        /// 
        /// 启动
        /// 
        public void Start()
        {
            _socketServer.Start();
        }
        /// 
        /// 停止
        /// 
        public void Stop()
        {
            _socketServer.Stop();
        }
    }

///
    /// 
    /// Websoket的信息处理类
    /// 
    public class WSocketHandle:WebSocketBehavior
    {
        public WSocketHandle()
        {
            WSocket.SendDataEvent += SendDataEvent;
        }
        /// 
        /// 关闭触发
        /// 
        /// 
        protected override void OnClose(CloseEventArgs e)
        {
            Console.WriteLine("连接断开:目前连接人数" + Sessions.Count);

        }
        /// 
        /// 连接触发
        /// 
        protected override void OnOpen()
        {
            Console.WriteLine("连接成功:目前连接人数" + Sessions.Count);

        }
        /// 
        /// 
        /// 
        /// 
        protected override void OnError(ErrorEventArgs e)
        {
            Console.WriteLine("错误信息:" + e.Message);

        }
        /// 
        /// 接收信息触发
        /// 
        /// 
        protected override void OnMessage(MessageEventArgs e) 
        {
            string data = e.Data;
            Console.WriteLine(data);
        }
        /// 
        /// 发送信息事件
        /// 
        /// 
        /// 
        public  bool SendDataEvent(string sData)
        {
            if(State== WebSocketState.Open)
            {
                if (Sessions.Count > 0)
                {
                    Send(sData);
                    return true;
                }
            }
            return false;
        }
    }
}

2.客户端

写了个简单的Html连接



    
    


客户端:
                    

总结

学习与快乐并进,只愿当下的我还是还是个阳光开朗的有那么点帅气的小伙子哈哈哈

你可能感兴趣的:(websocket,c#)