/// <summary> /// 初始化委托 /// </summary> /// <param name="invoke"></param> private void InitInvoke(IWebsocket invoke) { websocketSvr.Start(socket => { socket.OnOpen = () => { if (!remoteConnections.TryGetValue(socket.ConnectionInfo.Id, out var conn)) { conn = new RemoteConnection(); conn.socket = socket; remoteConnections.TryAdd(socket.ConnectionInfo.Id, conn); } invoke.OnOpen(conn); }; socket.OnClose = () => { if (remoteConnections.TryRemove(socket.ConnectionInfo.Id, out var conn)) { invoke.OnClose(conn); conn.tag = null; conn.message = null; conn.socket = null; } }; socket.OnMessage = message => { if (remoteConnections.TryGetValue(socket.ConnectionInfo.Id, out var conn)) { conn.message = message; invoke.OnMessage(conn); } }; socket.OnBinary = buffer => { if (remoteConnections.TryGetValue(socket.ConnectionInfo.Id, out var conn)) { conn.buffer = buffer; invoke.OnBinary(conn); } }; socket.OnError = exception => { if (remoteConnections.TryGetValue(socket.ConnectionInfo.Id, out var conn)) { invoke.OnError(conn, exception); } }; }); }