/// <summary> /// Send the specified payload as a JSON message to the server. /// </summary> /// <param name='payload'> /// Payload. /// </param> public int Send(object payload) { var m = new SocketIOMessage(); m.type = SocketIOMessage.FrameType.JSONMESSAGE; m.data = HTTP.JsonSerializer.Encode(payload); return(Send(m)); }
void Dispatch(string eventName, SocketIOMessage msg) { EventHandler fn = null; if (handlers.TryGetValue(eventName, out fn)) { fn(this, msg); } }
void HandleSocketOnTextMessageRecv(string message) { var msg = SocketIOMessage.FromString(message); msg.socket = this; switch (msg.type) { case SocketIOMessage.FrameType.DISCONNECT: StopCoroutine("Hearbeat"); Dispatch("disconnect", null); if (reconnect) { Reconnect(); } break; case SocketIOMessage.FrameType.CONNECT: if (msg.endPoint == null) { StartCoroutine("Heartbeat"); } break; case SocketIOMessage.FrameType.HEARTBEAT: //TODO break; case SocketIOMessage.FrameType.MESSAGE: Dispatch("message", msg); break; case SocketIOMessage.FrameType.JSONMESSAGE: Dispatch("json_message", msg); break; case SocketIOMessage.FrameType.EVENT: Dispatch(msg.eventName, msg); break; case SocketIOMessage.FrameType.ACK: //TODO break; case SocketIOMessage.FrameType.ERROR: Dispatch("error", msg); break; case SocketIOMessage.FrameType.NOOP: break; default: break; } }
/// <summary> /// Sends an event to the server. /// </summary> /// <param name='eventName'> /// Event name. /// </param> /// <param name='args'> /// Arguments. /// </param> public int Emit(string eventName, params object[] args) { var m = new SocketIOMessage(); m.type = SocketIOMessage.FrameType.EVENT; var payload = new Hashtable(); payload ["name"] = eventName; payload ["args"] = args; m.data = HTTP.JsonSerializer.Encode(payload); return(Send(m)); }
IEnumerator Heartbeat() { var beat = new SocketIOMessage(); beat.type = SocketIOMessage.FrameType.HEARTBEAT; var delay = new WaitForSeconds(heartbeatTimeout * 0.8f); while (socket.connected) { socket.Send(beat.ToString()); yield return(delay); } }
/// <summary> /// Send a raw SocketIOMessage to the server. /// </summary> /// <param name='msg'> /// Message. /// </param> public int Send(SocketIOMessage msg) { msg.id = msgUid++; if (socket == null) { Debug.LogError("Socket.IO is not initialised yet!"); return(-1); } else { socket.Send(msg.ToString()); return(msg.id.Value); } }
public static SocketIOMessage FromString(string msg) { var m = new SocketIOMessage(); var t = 0; if (int.TryParse(NextPart(msg, out msg), out t)) { m.type = (FrameType)t; } var id = NextPart(msg, out msg); if (id == null) { m.id = null; m.isUser = false; } else { if (id.EndsWith("+")) { m.isUser = true; id = id.Substring(0, id.Length - 1); } int i; if (int.TryParse(id, out i)) { m.id = i; } } m.endPoint = NextPart(msg, out msg); if (msg.Length > 0) { m.data = msg.Substring(1); } if (m.type == FrameType.EVENT) { var h = HTTP.JsonSerializer.Decode(m.data) as Hashtable; m.eventName = h ["name"] as string; m.args = ((ArrayList)h ["args"]).ToArray(); } return(m); }