void OnGUI() { // Input text message = GUI.TextArea(new Rect(0, 10, Screen.width * 0.7f, Screen.height / 10), message); // Send message button if (GUI.Button(new Rect(Screen.width * 0.75f, 10, Screen.width * 0.2f, Screen.height / 10), "Send")){ //SendChatMessage(); // SocketConnectionClosed(); JSONMessage json = new JSONMessage(); Debug.Log(json); this.socket.Emit("message", message); message=""; } /* // Show chat messages var l = string.Join("\n", messages.ToArray()); var height = Screen.height * 0.1f * messages.Count; GUI.Label( new Rect(0, Screen.height * 0.2f + 10, Screen.width * 0.8f, height), l); */ }
public static JSONMessage Deserialize(string rawMessage) { JSONMessage jsonMsg = new JSONMessage(); var groups = Messages.Message.ReMessageType.Match(rawMessage).Groups; jsonMsg.RawMessage = groups[0].Value; jsonMsg.Event = groups[1].Value; jsonMsg.MessageText = groups[2].Value; return(jsonMsg); }
public static IMessage Factory(string rawMessage) { if (reMessageType.IsMatch(rawMessage)) { char id = rawMessage.First(); switch (id) { case '0': return(DisconnectMessage.Deserialize(rawMessage)); case '1': return(ConnectMessage.Deserialize(rawMessage)); case '2': return(new Heartbeat()); case '3': return(TextMessage.Deserialize(rawMessage)); case '4': return(JSONMessage.Deserialize(rawMessage)); case '5': return(EventMessage.Deserialize(rawMessage)); case '6': return(AckMessage.Deserialize(rawMessage)); case '7': return(ErrorMessage.Deserialize(rawMessage)); case '8': return(new NoopMessage()); default: Trace.WriteLine(string.Format("Message.Factory undetermined message: {0}", rawMessage)); return(new TextMessage()); } } else { Trace.WriteLine(string.Format("Message.Factory did not find matching message type: {0}", rawMessage)); return(new NoopMessage()); } }
public static JSONMessage Deserialize(string rawMessage) { JSONMessage jsonMsg = new JSONMessage(); // '4:' [message id ('+')] ':' [message endpoint] ':' [json] // 4:1::{"a":"b"} jsonMsg.RawMessage = rawMessage; string[] args = rawMessage.Split(SPLITCHARS, 4); // limit the number of ' if (args.Length == 4) { int id; if (int.TryParse(args[1], out id)) jsonMsg.AckId = id; jsonMsg.Endpoint = args[2]; jsonMsg.MessageText = args[3]; } return jsonMsg; }
public static JSONMessage Deserialize(string rawMessage) { JSONMessage jsonMsg = new JSONMessage(); // '4:' [message id ('+')] ':' [message endpoint] ':' [json] // 4:1::{"a":"b"} jsonMsg.RawMessage = rawMessage; string[] args = rawMessage.Split(SPLITCHARS, 4); // limit the number of ' if (args.Length == 4) { int id; if (int.TryParse(args[1], out id)) { jsonMsg.AckId = id; } jsonMsg.Endpoint = args[2]; jsonMsg.MessageText = args[3]; } return(jsonMsg); }
public void InitializeSocket() { if(_client != null) _client.Close(); _client = new Client(@"https://socketio.mtgox.com"); _client.Message += SocketClientMessage; _client.Error += SocketClientError; _client.SocketConnectionClosed += SocketClientConnectionClosed; if (ValidApiKey) { SubscribeUserChannel subUser = new SubscribeUserChannel(GetIdKey()); JSONMessage userMsg = new JSONMessage(subUser, endpoint: "/mtgox") { Json = new JsonEncodedEventMessage("message", subUser) }; SubscribeLag subLag = new SubscribeLag(); JSONMessage lagMsg = new JSONMessage(subLag, endpoint: "/mtgox") { Json = new JsonEncodedEventMessage("message", subLag) }; _client.On("connect", data => { _client.Send(userMsg); _client.Send(lagMsg); }); } _client.Connect("/mtgox"); }
/// <summary> /// <para>Asynchronously sends payload using eventName</para> /// <para>payload must a string or Json Serializable</para> /// <para>Mimicks Socket.IO client 'socket.emit('name',payload);' pattern</para> /// <para>Do not use the reserved socket.io event names: connect, disconnect, open, close, error, retry, reconnect</para> /// </summary> /// <param name="eventName"></param> /// <param name="payload">must be a string or a Json Serializable object</param> /// <remarks>ArgumentOutOfRangeException will be thrown on reserved event names</remarks> public void Emit(string eventName, dynamic payload, string endPoint = "", Action<dynamic> callback = null) { string lceventName = eventName.ToLower(); IMessage msg = null; switch (lceventName) { case "message": if (payload is string) msg = new TextMessage() { MessageText = payload }; else msg = new JSONMessage(payload); this.Send(msg); break; case "connect": case "disconnect": case "open": case "close": case "error": case "retry": case "reconnect": throw new System.ArgumentOutOfRangeException(eventName, "Event name is reserved by socket.io, and cannot be used by clients or servers with this message type"); default: if (!string.IsNullOrWhiteSpace(endPoint) && !endPoint.StartsWith("/")) endPoint = "/" + endPoint; msg = new EventMessage(eventName, payload, endPoint, callback); if (callback != null) this.registrationManager.AddCallBack(msg); this.Send(msg); break; } }
public static IMessage Factory(string rawMessage) { if (Check(rawMessage)) { string message = rawMessage.TrimStart('0'); return(ConnectMessage.Deserialize(message)); } if (ReMessageType.IsMatch(rawMessage)) { char id = rawMessage.First(); switch (id) { case '0': return(DisconnectMessage.Deserialize(rawMessage)); case '1': return(ConnectMessage.Deserialize(rawMessage)); case '2': return(new Heartbeat()); case '3': return(TextMessage.Deserialize(rawMessage)); case '4': return(JSONMessage.Deserialize(rawMessage)); case '5': return(EventMessage.Deserialize(rawMessage)); case '6': return(AckMessage.Deserialize(rawMessage)); case '7': return(ErrorMessage.Deserialize(rawMessage)); case '8': return(new NoopMessage()); default: Trace.WriteLine(string.Format("Message.Factory undetermined message: {0}", rawMessage)); return(new TextMessage()); } } if (rawMessage.IndexOf("[") > 0) { // int index = rawMessage.IndexOf("["); return(AckMessage.Deserialize(rawMessage)); } //if (rawMessage == "3") //{ // return new Heartbeat(); //} else { Trace.WriteLine(string.Format("Message.Factory did not find matching message type: {0}", rawMessage)); return(new NoopMessage()); } }