Example #1
0
        /// <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));
        }
Example #2
0
        void Dispatch(string eventName, SocketIOMessage msg)
        {
            EventHandler fn = null;

            if (handlers.TryGetValue(eventName, out fn))
            {
                fn(this, msg);
            }
        }
Example #3
0
        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;
            }
        }
Example #4
0
        /// <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));
        }
Example #5
0
        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);
            }
        }
Example #6
0
 /// <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);
     }
 }
Example #7
0
        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);
        }