/// <summary> /// 完成与客户端握手并开启数据交流过程 /// </summary> ///<param name="param">用于WebSocket握手响应用的参数</param> /// <returns></returns> public Task Open(IDictionary <string, object> param = null) { //尝试握手,同意请求 //如果握手成功 if (_webSocket.Accept(param)) { _content = new WSContext(_webSocket); //激活OnAccept事件,通知应用层握手已经完成 OnAccept(_content); //开始接受远端数据 //本方法只需在连接成功后调用一次,然后就能不断继续。 _webSocket.StartAsync(); //返回WebSocket工作任务 return(_webSocket.WorkTask); } //如果握手失败 Console.WriteLine("Error: 与客户端握手失败, 客户端 IP 地址是: {0}", _webSocket.RemoteIpAddress); //返回(失败的)完成任务 return(Task.FromResult(new Exception("WebSocket Accept Error."))); }
/// <summary> /// 与客户端握手完成事件 /// </summary> ///<param name="content">当前会话对象</param> protected virtual void OnAccept(WSContext content) { }
/// <summary> /// 接收到客户端数据事件 /// </summary> /// <param name="content">会话对象</param> /// <param name="message">内容</param> protected abstract void OnMessage(WSContext content, string message);
/// <summary> /// 客户端关闭事件 /// </summary> /// <param name="content">会话对象</param> protected abstract void OnClose(WSContext content);
/// <summary> /// 发送完成事件 /// </summary> /// <param name="content">会话对象</param> protected abstract void OnSendComplete(WSContext content);