示例#1
0
        public SocketServer()
        {
            FleckLog.LogAction = (level, message, ex) => {
                if (ex != null)
                {
                    message += ex.ToString();
                }
                switch (level)
                {
                case LogLevel.Debug:
                    //Logger.log(13, Category.SocketServer, Severity.Debug, message);
                    break;

                case LogLevel.Error:
                    Logger.log(14, Category.SocketServer, Severity.Error, message);
                    break;

                case LogLevel.Warn:
                    Logger.log(15, Category.SocketServer, Severity.Warn, message);
                    break;

                default:
                    Logger.log(16, Category.SocketServer, Severity.Info, message);
                    break;
                }
            };

            Fleck.WebSocketServer server = new Fleck.WebSocketServer(Settings.socketServerUrl);
            server.Start(socket => {
                var playerWebSocket = new PlayerWebsocket(socket);
                socket.OnOpen       = () => {
                    if (playerWebSocket.isAuthenticated)
                    {
                        PlayerWebsocketConnections.AddSocket(playerWebSocket);
                    }
                    else
                    {
                        playerWebSocket.Close();
                    }
                };
                socket.OnClose = () => {
                    if (playerWebSocket.isAuthenticated)
                    {
                        PlayerWebsocketConnections.RemoveSocket(playerWebSocket);
                    }
                };
                socket.OnMessage = message => {
                    if (playerWebSocket.isAuthenticated)
                    {
                        Router.Route(playerWebSocket, message);
                    }
                };
            });


            this.server = server;
        }
示例#2
0
 public void Dispose()
 {
     PlayerWebsocketConnections.CloseAll();
     server.Dispose();
 }