static void socketServer_NewSessionConnected(JsonWebSocketSession session) { session.Send("Welcome to SuperSocket Telnet Server"); //SendResponse("{\"employees\": [{ \"firstName\":\"Bill\" , \"lastName\":\"Gates\" },{ \"firstName\":\"George\" , \"lastName\":\"Bush\" },{ \"firstName\":\"Thomas\" , \"lastName\":\"Carter\" }]}"); //JSON.stringify(Grade); //session.SendJsonMessage("test", Grade); session.SendJsonMessage("", Grade); }
/// <summary> /// 调用远程端实现的服务方法 /// </summary> /// <param name="api">api</param> /// <param name="parameters">参数列表</param> /// <returns></returns> public static bool TryInvokeApi(this JsonWebSocketSession session, string api, params object[] parameters) { try { session.InvokeApi(api, parameters); return(true); } catch (Exception) { return(false); } }
/// <summary> /// 连接断开 /// </summary> /// <param name="session"></param> protected override void OnDisconnect(JsonWebSocketSession session) { var name = (string)session.TagBag.Name; if (name == null) { return; } var members = this.AllSessions .Select(item => (string)item.TagBag.Name) .Where(item => item != null) .ToArray(); // 推送成员下线通知 foreach (var item in this.AllSessions) { item.TryInvokeApi("OnMemberChange", 0, name, members); } }
/// <summary> /// 请求上下文 /// </summary> /// <param name="session">当前会话对象</param> /// <param name="packet">数据包对象</param> /// <param name="allSessions">所有会话对象</param> internal RequestContext(JsonWebSocketSession session, JsonPacket packet, IEnumerable<JsonWebSocketSession> allSessions) { this.Session = session; this.Packet = packet; this.AllSessions = allSessions; }
/// <summary> /// 请求上下文 /// </summary> /// <param name="session">当前会话对象</param> /// <param name="packet">数据包对象</param> /// <param name="allSessions">所有会话对象</param> internal RequestContext(JsonWebSocketSession session, JsonPacket packet, ISessionProvider allSessions) { this.Session = session; this.Packet = packet; this.AllSessions = allSessions; }
/// <summary> /// 设置会话的包装对象 /// </summary> /// <param name="session">会话</param> /// <param name="wrapper">包装对象</param> protected override void OnSetProtocolWrapper(ISession session, WebSocketSession wrapper) { var jsonWebSocketSession = new JsonWebSocketSession(this, wrapper); session.SetProtocolWrapper("websocket", jsonWebSocketSession); }