zoukankan      html  css  js  c++  java
  • c#基于supersocket的简单websocket服务端收发消息实现

    using log4net;
    using SuperSocket.SocketBase;
    using SuperSocket.WebSocket;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace SupersocketServer
    {
    class Program {
    private static readonly ILog infoLogger = LogManager.GetLogger("Logger");
    static void Main(string[] args)
    {
    
    WebSocketServer ws = new WebSocketServer();
    ws.NewMessageReceived += Ws_NewMessageReceived;//当有信息传入时
    ws.NewSessionConnected += Ws_NewSessionConnected;//当有用户连入时
    ws.SessionClosed += Ws_SessionClosed;//当有用户退出时
    ws.NewDataReceived += Ws_NewDataReceived;//当有数据传入时
    if (ws.Setup(10086))//绑定端口
    ws.Start();//启动服务
    infoLogger.Info("服务已启动");
    Console.ReadKey();
    }
    public static List<WebSocketSession> sessionList = new List<WebSocketSession>();
    private static void Ws_NewDataReceived(WebSocketSession session, byte[] value)
    {
    string str = Encoding.UTF8.GetString(value);
    infoLogger.InfoFormat("数据传入 id:{0},value:{1}", session.SessionID, str);
    }
    
    private static void Ws_SessionClosed(WebSocketSession session, CloseReason value)
    {
    sessionList.Remove(session);
    infoLogger.InfoFormat("用户退出:{0},value:{1}", session.SessionID, value);
    }
    
    private static void Ws_NewSessionConnected(WebSocketSession session)
    {
    sessionList.Add(session);
    infoLogger.InfoFormat("用户连入:" + session.SessionID);
    }
    
    private static void Ws_NewMessageReceived(WebSocketSession session, string value)
    {
    infoLogger.InfoFormat("接收消息 id:{0},value:{1}", session.SessionID, value);
    if (value=="Hello")
    {
    //模拟心跳包
    sessionList.ForEach(o => { o.Send("你好"); });
    }
    }
    }
    }
    

      

    -------------------------------------------

    学而不思则罔,思而不学则殆

    你好,我是【咬轮猫】

    -------------------------------------------

  • 相关阅读:
    Android 最火框架XUtils之注解机制具体解释
    Oracle GoldenGate从oracle db 到非oracle db的初始化数据同步的方法
    Java中接口和抽象类的比較
    spring+springmvc+hibernate架构、maven分模块开发样例小项目案例
    配置Java连接池的两种方式:tomcat方式以及spring方式
    Ant报错之out of memory
    Mybatis 框架文档 超具体笔记
    jsp
    HDU 1251 统计难题(字典树)
    HDU 1251 统计难题(字典树)
  • 原文地址:https://www.cnblogs.com/Hero-/p/9713210.html
Copyright © 2011-2022 走看看