// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseBrowserLink(); app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseCors(options => options .AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() ); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); var wsOptions = new WebSocketOptions() { KeepAliveInterval = TimeSpan.FromSeconds(240), ReceiveBufferSize = 16 * 1024 }; app.UseWebSockets(wsOptions); RoomServer.Initialize(app, "/websocket"); }
protected internal override async Task Shutdown(string reason) { RoomServer.Shutdown(reason); PlayerServer.Shutdown(reason); while (RoomServer.Status != NetPeerStatus.NotRunning || PlayerServer.Status != NetPeerStatus.NotRunning) { await Task.Delay(10); } }
protected internal override void SendToAllRooms(NetMessage msg, ReliabilityMode mode) { var lmsg = RoomServer.CreateMessage(msg.Data.Length); msg.Clone(lmsg); NetMessage.RecycleMessage(msg); var method = mode.RoomDelivery(); RoomServer.SendToAll(lmsg, method); }
protected internal override void SendToOtherRooms(Room except, NetMessage msg, ReliabilityMode mode) { var lmsg = RoomServer.CreateMessage(msg.Data.Length); msg.Clone(lmsg); NetMessage.RecycleMessage(msg); var method = mode.RoomDelivery(); RoomServer.SendToAll(lmsg, except.Connection as NetConnection, method, 0); }
protected internal override void SendToRoom(Room room, NetMessage msg, ReliabilityMode mode) { var lmsg = RoomServer.CreateMessage(msg.Data.Length); msg.Clone(lmsg); NetMessage.RecycleMessage(msg); var method = mode.RoomDelivery(); RoomServer.SendMessage(lmsg, room.Connection as NetConnection, method); }
private void LidgrenApproveRoomConnection(NetConnection sConn, IPEndPoint sender, NetMessage msg) { if (!ApproveRoomConnection(sender, msg, out var denyReason, out var room)) { sConn.Deny(denyReason); return; } room.Connection = sConn; var gbytes = room.Guid.ToByteArray(); var gmsg = RoomServer.CreateMessage(gbytes.Length); gmsg.Write(gbytes); sConn.Approve(gmsg); sConn.Tag = room; }
//为了防止其他类去调用这个类生成这个实例 //所以把这个构造函数私有 private ServerManager() { loginser = new LoginServer(); hallser = new HallServer(); roomser = new RoomServer(); }
partial void ImplementationShutdown(string reason) { RoomServer.Shutdown(reason); PlayerServer.Shutdown(reason); }