public virtual void AttachSession(WebSocketSessionBase session) { if (session != null) { base.SetSession(session); SessionCreated(session); } }
public virtual void DettachSession(WebSocketSessionBase session) { if (session != null) { session.MessageReceived -= ws_MessageReceived; session.SwitchingProtocol -= ws_SwitchingProtocol; session.HandshakeCompleted -= ws_HandshakeCompleted; RemoveSession(session); } }
public override void SessionCreated(Dynamic.Net.Base.INetSession session) { base.SessionCreated(session); WebSocketSessionBase ws = session as WebSocketSessionBase; if (ws != null) { ws.MessageReceived += new EventHandler <MessageReceivedEventArgs>(ws_MessageReceived); ws.SwitchingProtocol += new EventHandler <SwitchingProtocolEventArgs>(ws_SwitchingProtocol); ws.HandshakeCompleted += new EventHandler(ws_HandshakeCompleted); } }
void sendHandshakeCommand(Socket socket) { if (socket.Connected) { try { string url = this.Url; if (String.IsNullOrEmpty(url)) { url = "/chat"; } string header = String.Format(@"GET " + url + @" HTTP/1.1 Host: {0} Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Origin: {1} Sec-WebSocket-Protocol: {2} Sec-WebSocket-Version: 13 ", Host, Origin, Protocols); session = sessionFactory.CreateSession(this, protocol, client); session.SubProtocol = Protocols; session.MessageReceived += new EventHandler <MessageReceivedEventArgs>(session_MessageReceived); session.SessionClosed += new EventHandler(session_SessionClosed); session.HandshakeCompleted += new EventHandler(session_HandshakeCompleted); session.Start(); socket.Send(Encoding.UTF8.GetBytes(header)); } catch { lock (lockerObj) { isConnecting = false; } if (Connected != null) { Connected(this, new WebSocketConnectedEventArgs(false, this)); } } } }