private void ClientMessageReceived(object sender, MessageReceivedEventArgs e) { WebSocketWrapper wrapper = sender as WebSocketWrapper; string message = e.Message; int index = message.IndexOf(' '); if (index <= 0) { return; } string command = message.Substring(0, index); string args = ""; if (index < message.Length - 1) { args = message.Substring(index + 1); } switch (command) { case "/add": if (args == "left") { BoardCurrent.AddLeft(); } else if (args == "right") { BoardCurrent.AddRight(); } Broadcast($"{{type: 'add', side: '{args}', left: {BoardCurrent.LeftCount}, right: {BoardCurrent.RightCount}}}"); break; } }
private void ClientDisconnected(object sender, EventArgs e) { WebSocketWrapper wrapper = sender as WebSocketWrapper; lock (clients) { clients.Remove(wrapper.ConnectInformation.RemoteAddress); wrapper.Disconnected -= ClientDisconnected; wrapper.MessageReceived -= ClientMessageReceived; wrapper.Dispose(); } }
public WebSocketWrapper AddClient(HttpContext context, WebSocket socket) { WebSocketWrapper wrapper = new WebSocketWrapper(context, socket); string formatedaddr = wrapper.ConnectInformation.RemoteAddress; lock (clients) { wrapper.MessageReceived += ClientMessageReceived; wrapper.Disconnected += ClientDisconnected; clients.Add(formatedaddr, wrapper); wrapper.Send($"{{type: 'set', title: '{BoardCurrent.Title}', leftimg: '{BoardCurrent.LeftImage}', rightimg: '{BoardCurrent.RightImage}', left: {BoardCurrent.LeftCount}, right: {BoardCurrent.RightCount}}}"); } return(wrapper); }