void SocketConnect() { socket = new Socket(new BestHTTPWebsocketFactory(), new Socket.Options { heartbeatInterval = TimeSpan.FromSeconds(3), channelRejoinInterval = TimeSpan.FromMilliseconds(200), }); Socket.OnOpenDelegate onOpenCallback = () => { // Debug.Log("Socket on open."); FetchGames(); JoinLobby(); }; Socket.OnClosedDelegate onCloseCallback = (code, message) => Debug.Log(string.Format("Socket on close. {0} {1}", code, message)); // Socket.OnMessageDelegate onMessageCallback = (message) => Debug.Log(string.Format("Socket on message. {0}", message)); Socket.OnErrorDelegate onErrorCallback = message => { Debug.Log("Socket on error."); }; socket.OnOpen += onOpenCallback; socket.OnError += onErrorCallback; socket.OnClose += onCloseCallback; // socket.OnMessage += onMessageCallback; Dictionary <string, string> socketArgument = new Dictionary <string, string>(); socketArgument["id"] = myID; socket.Connect("wss://matrix.heasygame.com/socket", socketArgument); }
public void MultipleJoinIntegrationTest() { var onOpenCount = 0; Socket.OnOpenDelegate onOpenCallback = () => onOpenCount++; Socket.OnClosedDelegate onClosedCallback = (code, message) => onOpenCount--; List <String> onMessageData = new List <string>(); Socket.OnMessageDelegate onMessageCallback = m => onMessageData.Add(m); var socketFactory = new DotNetWebSocketFactory(); var socket = new Socket(socketFactory, new Socket.Options { channelRejoinInterval = TimeSpan.FromMilliseconds(200), logger = new BasicLogger() }); socket.OnOpen += onOpenCallback; socket.OnClose += onClosedCallback; socket.OnMessage += onMessageCallback; socket.Connect(string.Format("ws://{0}/socket", host), null); Assert.IsTrue(socket.state == Socket.State.Open); Assert.AreEqual(1, onOpenCount); Reply? joinOkReply = null; Reply? joinErrorReply = null; Message afterJoinMessage = null; Message closeMessage = null; Message errorMessage = null; //Try to join for the first time var param = new Dictionary <string, object> { { "auth", "doesn't matter" }, }; var roomChannel = socket.MakeChannel("tester:phoenix-sharp"); roomChannel.On(Message.InBoundEvent.phx_close, m => closeMessage = m); roomChannel.On(Message.InBoundEvent.phx_error, m => errorMessage = m); roomChannel.On("after_join", m => afterJoinMessage = m); roomChannel.Join(param) .Receive(Reply.Status.Ok, r => joinOkReply = r) .Receive(Reply.Status.Error, r => joinErrorReply = r); Assert.That(() => joinOkReply.HasValue, Is.True.After(networkDelay, 10)); Assert.IsNull(joinErrorReply); Assert.That(() => afterJoinMessage != null, Is.True.After(networkDelay, 10)); Assert.AreEqual("Welcome!", afterJoinMessage.payload["message"].Value <string>()); Assert.AreEqual(Channel.State.Joined, roomChannel.state); socket.Disconnect(null, null); Assert.AreEqual(Socket.State.Closed, socket.state); socket.Connect(string.Format("ws://{0}/socket", host), null); Assert.IsTrue(socket.state == Socket.State.Open); Assert.AreEqual(1, onOpenCount); }