public async Task BinaryEventTest() { ByteResponse result = null; var client = new SocketIO(Uri, new SocketIOOptions { Query = new Dictionary <string, string> { { "token", "io" } } }); client.On("bytes", response => result = response.GetValue <ByteResponse>()); const string dotNetCore = ".net core"; const string client001 = "client001"; const string name = "unit test"; client.OnConnected += async(sender, e) => { await client.EmitAsync("bytes", name, new { source = client001, bytes = Encoding.UTF8.GetBytes(dotNetCore) }); }; await client.ConnectAsync(); await Task.Delay(200); await client.DisconnectAsync(); Assert.AreEqual("client001", result.ClientSource); Assert.AreEqual("server", result.Source); Assert.AreEqual($"{dotNetCore} - server - {name}", Encoding.UTF8.GetString(result.Buffer)); }
public async Task ReturnEchoedPayloadForByteArrayPOST() { ByteResponse response = await Settings.Host .AppendPathSegment("verbs") .AppendPathSegment("bytes") .PostJsonAsync(new { Bytes = Encoding.UTF8.GetBytes(Message) }) .ReceiveJson <ByteResponse>(); string message = Encoding.UTF8.GetString(response.Bytes); Assert.Equal(message, Message); }
public async Task CancelAckTest() { ByteResponse result = null; var client = new SocketIO(ConnectAsyncTest.URL, new SocketIOOptions { Reconnection = false, Query = new Dictionary <string, string> { { "token", "io" } } }); const string dotNetCore = ".net core"; const string client001 = "client001"; const string name = "unit test"; client.OnConnected += async(sender, e) => { var cts = new CancellationTokenSource(); cts.Cancel(); await client.EmitAsync("binary ack", cts.Token, response => { result = response.GetValue <ByteResponse>(); }, name, new { source = client001, bytes = Encoding.UTF8.GetBytes(dotNetCore) }); }; await client.ConnectAsync(); await Task.Delay(200); await client.DisconnectAsync(); Assert.IsNull(result); }
/// <summary> /// /// </summary> /// <param name="context"></param> /// <returns></returns> public async Task <IHttpResponseAction> Execute(IHttpRequestContext context) { int statusCode; RequestPackage package; var actionDispatcher = GameEnvironment.Setting.ActionDispatcher; if (!actionDispatcher.TryDecodePackage(context.Request, out package, out statusCode)) { return(new ByteResponse(statusCode, statusCode == 200 ? "OK" : "FAIL", new byte[0])); } GameSession session; if (package.ProxySid != Guid.Empty) { session = GameSession.Get(package.ProxySid) ?? GameSession.CreateNew(package.ProxySid, context.Request); session.ProxySid = package.ProxySid; } else { session = (string.IsNullOrEmpty(package.SessionId) ? GameSession.GetSessionByCookie(context.Request) : GameSession.Get(package.SessionId)) ?? GameSession.CreateNew(Guid.NewGuid(), context.Request); } package.Bind(session); ActionGetter httpGet = actionDispatcher.GetActionGetter(package, session); if (package.IsUrlParam) { httpGet["UserHostAddress"] = session.RemoteAddress; httpGet["ssid"] = session.KeyCode.ToString("N"); httpGet["http"] = "1"; } var result = await System.Threading.Tasks.Task.Run <byte[]>(() => { try { return(ScriptEngines.GetCurrentMainScript().ProcessRequest(package, httpGet)); } catch (Exception ex) { TraceLog.WriteError("Excute mainclass error:{0}", ex); return(new byte[0]); } }); string sessionId = session.SessionId; var response = new ByteResponse(statusCode, "OK", result); response.CookieHandle += ctx => { var cookie = ctx.Request.Cookies["sid"]; if (cookie == null) { cookie = new Cookie("sid", sessionId); cookie.Expires = DateTime.Now.AddMinutes(5); ctx.Response.SetCookie(cookie); } }; return(response); }