| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- using System;
- using System.Text;
- using System.Collections;
- using System.Collections.Generic;
- using HPSocket;
- using HPSocket.WebSocket;
- namespace HXX.Scanner.Socket
- {
- public class biz_Hub : IHub
- {
- /// <summary>
- /// 消息到达
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="connId"></param>
- /// <param name="final"></param>
- /// <param name="opCode"></param>
- /// <param name="mask"></param>
- /// <param name="data"></param>
- /// <returns></returns>
- public HandleResult OnMessage(IWebSocketServer sender, IntPtr connId, bool final, OpCode opCode, byte[] mask, byte[] data)
- {
- try
- {
- if (opCode == OpCode.Text)
- {
- var msg = Encoding.UTF8.GetString(data);
- if (msg == "ping")
- {
- sender.Text(connId, "pong");
- }
- else if (msg == "pong")
- {
- }
- else
- {
- SocketServerManager.on_message(connId, data);
- }
- }
- else
- {
- SocketServerManager.on_message(connId, opCode.ToString());
- }
-
- return HandleResult.Ok;
- }
- catch (Exception ee)
- {
- SocketServerManager.on_message(connId, ee.Message);
- return HandleResult.Error;
- }
- }
- /// <summary>
- /// 连接打开
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="connId"></param>
- /// <returns></returns>
- public HandleResult OnOpen(IWebSocketServer sender, IntPtr connId)
- {
- var httpServer = (IHttpServer)sender.Http;
- //var xx = $"OnOpen({connId}), cookie: [{httpServer.GetHeader(connId, "Cookie")}], user-agent: [{httpServer.GetHeader(connId, "User-Agent")}]";
- ////Console.WriteLine($"OnOpen({connId}), cookie: [{httpServer.GetHeader(connId, "Cookie")}], user-agent: [{httpServer.GetHeader(connId, "User-Agent")}]");
- //if(httpServer.GetListenAddress(out var ip,out var port))
- //{
- //}
- //if (httpServer.GetLocalAddress(connId, out var ip2, out var port2))
- //{
- //}
- var token = httpServer.GetHeader(connId, "Sec-WebSocket-Protocol");
- SocketServerManager.add_client(connId, token);
- //var str = "{action:\"connect\",code:200,msg:\"ok\"}";
- //var bytes = Encoding.UTF8.GetBytes(str);
- //var ok = sender.Send(connId, OpCode.Text, bytes, bytes.Length);
- //return ok ? HandleResult.Ok : HandleResult.Error;
- SocketServerManager.on_connect(connId);
- return HandleResult.Ok;
- }
- /// <summary>
- /// 连接关闭
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="connId"></param>
- /// <param name="socketOperation"></param>
- /// <param name="errorCode"></param>
- /// <returns></returns>
- public HandleResult OnClose(IWebSocketServer sender, IntPtr connId, SocketOperation socketOperation, int errorCode)
- {
- SocketServerManager.on_close(connId, sender.GetAllConnectionIds().Count);
- return HandleResult.Ok;
- }
- public void OnPing(IWebSocketServer sender, IntPtr connId, byte[] data)
- {
- }
- public void OnPong(IWebSocketServer sender, IntPtr connId, byte[] data)
- {
- var xx = Encoding.UTF8.GetString(data);
- SocketServerManager.on_message(connId, "on pong");
- sender.Pong(connId, data, data.Length);
- }
- }
- }
|