public static Channel GetInstance(string _topic, Socket _socket, PayloadReq _payload) { Channel channel = _socket.gameObject.AddComponent <Channel>(); channel.Config(_topic, _socket, _payload); return(channel); }
public Channel CreateChannel(string topic, PayloadReq payload) { Channel channel = Channel.GetInstance(topic, this, payload); channels.Add(channel); return(channel); }
// Initializes the Push // // channel - The Channel // event - The event, for example `"phx_join"` // payload - The payload, for example `{user_id: 123}` // timeout - The push timeout in milliseconds // public static Push GetInstance(Channel _channel, string _event, PayloadReq _payload, int _timeout) { Push push = _channel.gameObject.AddComponent <Push>(); push.channel = _channel; push.eventName = _event; push.payloadReq = _payload; push.Timeout = _timeout; return(push); }
Push PushEvent(string _event, PayloadReq _payloadReq, int timeout) { if (!joinedOnce) { throw new InvalidOperationException("tried to push '" + _event + "' to '" + Topic + "' before joining. Use Channel.Join() before pushing events"); } Push pushEvent = Push.GetInstance(this, _event, _payloadReq, timeout); if (CanPush()) { pushEvent.Send(); } else { pushEvent.SetResponseListener(); pushBuffer.Add(pushEvent); } return(pushEvent); }
void Config(string _topic, Socket _socket, PayloadReq _payload) { state = CHANNEL_STATES.CLOSED; Topic = _topic; Socket = _socket; payloadReq = _payload; timeout = _socket.Timeout; joinedOnce = false; joinPush = Push.GetInstance(this, CHANNEL_EVENTS.JOIN, payloadReq, timeout); joinPush.Receive("ok", (nop) => { state = CHANNEL_STATES.JOINED; pushBuffer.ForEach(events => events.Send()); }); joinPush.Receive("timeout", (nop) => { if (state != CHANNEL_STATES.JOINING) { return; } Debug.Log("Timeout on topic: " + Topic + " " + joinPush.Timeout); state = CHANNEL_STATES.ERRORED; startRejoinTimer = true; }); OnClose((payloadResp, refResp) => { Debug.Log("Close channel: " + Topic); state = CHANNEL_STATES.CLOSED; Socket.Remove(this); }); OnError((payloadResp, refResp) => { Debug.Log("Error on topic: " + Topic + " reason: " + payloadResp.status); state = CHANNEL_STATES.ERRORED; startRejoinTimer = true; }); OnReply((payloadResp, refResp) => { Trigger(ReplyEventName(refResp), payloadResp); }); }
public Push PushEvent(string _event, PayloadReq _payloadReq) { return(PushEvent(_event, _payloadReq, timeout)); }