Start() public method

public Start ( Action config ) : void
config Action
return void
        public void InitializeSockets()
        {
            _sockets = new List<IWebSocketConnection>();

            var server = new WebSocketServer("ws://localhost:8181");

            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    _sockets.Add(socket);
                };
                socket.OnClose = () =>
                {
                    _sockets.Remove(socket);
                };
                socket.OnMessage = message =>
                {
                    JavaScriptSerializer js = new JavaScriptSerializer();

                    dynamic obj = js.Deserialize<object>(message);
                    dynamic listaComandos = obj["Palabras"];
                    Audio.añadirComandos(listaComandos);
                };
            });
        }
        public void InitializeListener()
        {
            var server = new WebSocketServer("ws://localhost:8989/FileTail");

            server.Start(socket =>
            {
                socket.OnOpen = () => Console.WriteLine("Open!");
                socket.OnClose = () => Console.WriteLine("Close!");
                socket.OnMessage = message => socket.Send(message);
            });

            //var listener = new TcpListener(IPAddress.Loopback, 8989);
            //try
            //{
            //    listener.Start();
            //    using (var client = listener.AcceptTcpClient())
            //    using (var stream = client.GetStream())
            //    using (var reader = new StreamReader(stream))
            //    using (var writer = new StreamWriter(stream))
            //    {
            //        writer.WriteLine("HTTP/1.1 101 Web Socket Protocol Handshake");
            //        writer.WriteLine("Upgrade: WebSocket");
            //        writer.WriteLine("Connection: Upgrade");
            //        writer.WriteLine("WebSocket-Origin: http://localhost:50695");
            //        writer.WriteLine("WebSocket-Location: ws://localhost:8989/websession");
            //        writer.WriteLine("");
            //    }
            //    listener.Stop();
            //}
            //catch
            //{ }
        }
示例#3
0
        private static void InitializeConnection()
        {
            var server = new WebSocketServer("ws://0.0.0.0:8181");

            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    _clients.Add(socket);
                };

                socket.OnClose = () =>
                {
                    _clients.Remove(socket);
                };

                socket.OnMessage = message =>
                {
                    switch (message)
                    {
                        case "Color":
                            _mode = Mode.Color;
                            break;
                        case "Depth":
                            _mode = Mode.Depth;
                            break;
                        default:
                            break;
                    }

                    Console.WriteLine("Switched to " + message);
                };
            });
        }
示例#4
0
        private void Initialize()
        {
            var server = new WebSocketServer("ws://0.0.0.0:8282");

            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    _clients.Add(socket);
                };

                socket.OnClose = () =>
                {
                    _clients.Remove(socket);
                };

                socket.OnMessage = message =>
                {
                    //var eventObject = Serialization.DeserializeEnvelope<ContractMarker>(message);
                    //_commandReceivedSubject.OnNext(eventObject);

                    Tracer.Trace(message);
                };

                socket.OnBinary = data =>
                {
                    Tracer.Trace("Binary data sent from client o_0");
                };
            });
        }
        public void StartServer()
        {
            var allSockets = new List<IWebSocketConnection>();
            var server = new WebSocketServer("ws://localhost:8181");

            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    //Console.WriteLine("Open!");
                    allSockets.Add(socket);
                };
                socket.OnClose = () =>
                {
                    //Console.WriteLine("Close!");
                    allSockets.Remove(socket);
                };
                socket.OnMessage = message =>
                {
                    var date = DateTime.Now.ToShortTimeString();
                    //SaveMessage(socket.ConnectionInfo.Id, message);
                    //Console.WriteLine(message);
                    allSockets.ToList().ForEach(s => s.Send(date + ": " + message));
                };
            });

            //server.Close();

            //ServiceHost host = new ServiceHost(typeof(MyService));
        }
示例#6
0
        private static void InitializeServer()
        {
            var server = new WebSocketServer("ws://localhost:8181");

            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    Console.WriteLine("Connected to " + socket.ConnectionInfo.ClientIpAddress);
                    _clients.Add(socket);
                };

                socket.OnClose = () =>
                {
                    Console.WriteLine("Disconnected from " + socket.ConnectionInfo.ClientIpAddress);
                    _clients.Remove(socket);
                };

                socket.OnMessage = message =>
                {
                    Console.WriteLine(message);
                };
            });

            _serverInitialized = true;

            Console.ReadLine();
        }
示例#7
0
        static void Main(string[] args)
        {
            string url = args.Length > 0 ? args[0] : "ws://localhost:8181";

            server = new WebSocketServer(url);

            server.Start(socket =>
            {
                socket.OnOpen = () => Open(socket);
                socket.OnClose = () => Close(socket);
                socket.OnMessage = message => Receive(socket, message);
            });

            Console.WriteLine("Type a message to send to the client (type 'exit' to close):");

            var input = Console.ReadLine();
            while (input != "exit")
            {
                foreach (IWebSocketConnection socket in allSockets)
                {
                    //standard socket raw send method
                    socket.Send(input);

                    //find our dynamic sockpuppet for this socket, and call a dynamic method
                    clientDynamicWindows[socket.ConnectionInfo.Id].document.write("called from a dynamic object method: " + input);

                    //find our strongly typed interface sockpuppet for this socket, and call a typed method (that matches a method for our chosen context on the client)\
                    clientWindows[socket.ConnectionInfo.Id].alert("called from an interface method: " + input);
                }

                input = Console.ReadLine();
            }
        }
示例#8
0
        static void Main()
        {
            FleckLog.Level = LogLevel.Debug;
            var allSockets = new List<IWebSocketConnection>();
            var server = new WebSocketServer("ws://0.0.0.0:8181");

            server.Start(socket =>
                {
                    socket.OnOpen = () =>
                        {
                            Console.WriteLine("Open!");
                            allSockets.Add(socket);
                        };
                    socket.OnClose = () =>
                        {
                            Console.WriteLine("Close!");
                            allSockets.Remove(socket);
                        };
                    socket.OnMessage = message =>
                        {
                            Console.WriteLine(message);

                            // process the message
                            dynamic gameState = gameServer.MessageBroker.ProcessMessage(message);
                            string serializedState = _serializer.Serialize(gameState);
                            //allSockets.ToList().ForEach(s => s.Send("Echo: "));
                        };
                });

            var input = Console.ReadLine();
            while (input != "exit")
            {
                input = Console.ReadLine();
            }
        }
示例#9
0
文件: Proxy.cs 项目: HclX/HomeLink
        public void Run(string serverUrl)
        {
            var server = new WebSocketServer(serverUrl);
            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    onClientConnected(socket);
                };

                socket.OnClose = () =>
                {
                    onClientDisconnected(socket, null);
                };

                socket.OnMessage = (message) =>
                {
                    onClientMessage(socket, message, null);
                };

                socket.OnBinary = (message) =>
                {
                    onClientMessage(socket, message, null);
                };
            });
        }
示例#10
0
        public void SendData()
        {
            var server = new Fleck.WebSocketServer("ws://127.0.0.1:8081/");

            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    Console.WriteLine("Open!");
                };

                socket.OnMessage = message =>
                {
                    Console.WriteLine(message);
                    if (message.StartsWith("Venda"))
                    {
                        string[] dados = message.Split('|');

                        //abrir conexão com o banco de dados SQL.
                        //Verificar o pedido

                        //Resposta para o cliente
                        socket.Send("Confirmado");
                    }
                };

                socket.OnClose = () =>
                {
                    Console.WriteLine("Close!");
                };
            });

            Console.ReadKey();
        }
示例#11
0
        public void Start()
        {
            Fleck.WebSocketServer server = new Fleck.WebSocketServer("ws://localhost:8181");

            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    Console.WriteLine("Connection open.");
                    this._sockets.Add(socket);
                };
                socket.OnClose = () =>
                {
                    Console.WriteLine("Connection closed");
                    this._sockets.Remove(socket);
                };
            });

            this._stocks = Builder <Stock> .CreateListOfSize(1000).WhereAll().Build();

            if (this._timer == null)
            {
                this._timer = new Timer(SendStock, null, 0, 1500);

                Console.WriteLine("");
                Console.WriteLine("Sending stock info to all connected clients.");
            }

            Console.ReadLine();
        }
        public void Init(string port)
        {
            FleckLog.Level = LogLevel.Warn;
            _allSockets = new List<IWebSocketConnection>();
            var websocketaddr = "ws://127.0.0.1:" + port;
            Logger.WriteMinorEvent("Attempting to open a WebSocketServer on " + websocketaddr);
            _server = new WebSocketServer(websocketaddr);

            try
            {
                _server.Start(socket =>
                {
                    socket.OnOpen = () =>
                    {
                        Debug.WriteLine("Backend received an request to open a BloomWebSocketServer socket");
                        _allSockets.Add(socket);
                    };
                    socket.OnClose = () =>
                    {
                        Debug.WriteLine("Backend received an request to close  BloomWebSocketServer socket");
                        _allSockets.Remove(socket);
                    };
                });
            }
            catch (SocketException ex)
            {
                Logger.WriteEvent("Opening a WebSocketServer on " + websocketaddr + " failed.  Error = " + ex);
                ErrorReport.NotifyUserOfProblem(ex, "Bloom cannot start properly (cannot set up some internal communications){0}{0}" +
                    "What caused this?{0}" +
                    "Possibly another version of Bloom is running, perhaps not very obviously.{0}{0}" +
                    "What can you do?{0}" +
                    "Click OK, then exit Bloom and restart your computer.{0}" +
                    "If the problem keeps happening, click 'Details' and report the problem to the developers.", Environment.NewLine);
            }
        }
示例#13
0
        public void Start()
        {
            Fleck.WebSocketServer server = new Fleck.WebSocketServer("ws://0.0.0.0:62127");

            server.Start(socket =>
            {
                Connection connection = new Connection(this, socket);

                lock (readLock)
                {
                    connections.Add(connection);
                }

                connection.Start();

                gameManager.OnJoin(connection);
            }
                         );

            // Sleep. Sleep the peace of the dead.
            System.Threading.Thread.Sleep(-1);

            //while (true) // We will never ever exit
            //    Console.ReadLine();
        }
示例#14
0
        static void Main()
        {
            FleckLog.Level = LogLevel.Debug;
            var allSockets = new List<IWebSocketConnection>();
            var server = new WebSocketServer("ws://localhost:8181");
            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    Console.WriteLine("连接成功");
                    allSockets.Add(socket);
                };
                socket.OnClose = () =>
                {
                    Console.WriteLine("连接已关闭");
                    allSockets.Remove(socket);
                };
                socket.OnMessage = message =>
                {
                    Console.WriteLine("客户端发来消息"+message);
                    //allSockets.ForEach(s => s.Send(message));
                };
            });

            var input = Console.ReadLine();
            while (input != "exit")
            {
                foreach (var socket in allSockets.ToList())
                {
                    socket.Send(input);
                }
                input = Console.ReadLine();
            }
        }
示例#15
0
 public void WebSocketInit()
 {
     WebSocketServer.Start(socketConnection =>
     {
         socketConnection.OnClose = () =>
         {
             Console.WriteLine("连接关闭");
             webSockets.Remove(socketConnection);
         };
         socketConnection.OnOpen = () =>
         {
             Console.WriteLine("开启连接");
             webSockets.Add(socketConnection);
         };
         socketConnection.OnError = ex =>
         {
             Console.WriteLine("报错了,服务端关闭连接");
             socketConnection.Close();
         };
         socketConnection.OnMessage = clientMsg =>
         {
             Console.WriteLine($"接收客户端的信息{clientMsg}");
             socketConnection.Send($"返回给客户端信息:{clientMsg}");
         };
     });
 }
示例#16
0
        public void Start()
        {
            List<IWebSocketConnection> sockets = new List<IWebSocketConnection>();
            Fleck.WebSocketServer server = new Fleck.WebSocketServer("ws://127.0.0.1:8181");

            server.Start(socket =>
                {
                    socket.OnOpen = () =>
                        {
                            Console.WriteLine("Connection open.");
                            sockets.Add(socket);
                        };
                    socket.OnClose = () =>
                        {
                            Console.WriteLine("Connection closed.");
                            sockets.Remove(socket);
                        };
                    socket.OnMessage = message =>
                        {
                            Console.WriteLine("Client says: " + message);
                            sockets.ToList().ForEach(s => s.Send(" client says:" + message));
                        };

                });

            string input = Console.ReadLine();
            while (input != "exit")
            {
                sockets.ToList().ForEach(s => s.Send(input));
                input = Console.ReadLine();
            }
        }
        static void Main(string[] args)
        {
            var server = new WebSocketServer("ws://localhost:8181");
            server.Start(socket =>
            {
                socket.OnOpen = () => 
                    {
                        Console.WriteLine("Open: " + socket.ConnectionInfo.Id);
                    };
                socket.OnClose = () => 
                    {
                        Console.WriteLine("Close: " + socket.ConnectionInfo.Id);

                        ChatServer.Instance.ClientLost(socket);
                    };
                socket.OnMessage = message =>
                {
                    Console.WriteLine("Message: " + socket.ConnectionInfo.Id);
                    Console.WriteLine("    " + message);

                    ChatServer.Instance.Accept(socket, message);
                };
            });

            Console.ReadLine();
        }
        static void Main(string[] args)
        {
            var webSocketServer = new WebSocketServer("ws://127.0.0.1:8081");
            var sockets = new List<IWebSocketConnection>();

            webSocketServer.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    sockets.Add(socket);
                };

                socket.OnMessage = mensagem =>
                {
                    foreach (var s in sockets)
                    {
                        s.Send(mensagem);
                    }
                };

                socket.OnClose = () =>
                {
                    sockets.Remove(socket);
                };
            });

            Console.ReadKey();
        }
示例#19
0
文件: ChatHandler.cs 项目: Cir0X/ludo
        public ChatHandler()
        {
            chatSocketList = new List<IWebSocketConnection>();
            var server = new WebSocketServer("ws://localhost:5002/chat");
            server.Start(socket =>
            {
                socket.OnOpen = () => {
                    Console.WriteLine("User connected to Chat");
                    chatSocketList.Add(socket);
                    //socket.Send(JsonConvert.SerializeObject(Main.ludo.Chat));
                };

                socket.OnClose = () => {
                    chatSocketList.Remove(socket);
                };

                socket.OnMessage = message =>
                {
                    Console.WriteLine("[ChatHandler] Incoming: " + message);
                    Message msg = JsonConvert.DeserializeObject<Message>(message);
                    msg.TimeStamp = DateTime.Now;
                    Main.ludo.Chat.Add(msg);
                    foreach (var s in chatSocketList.ToList())
                    {
                        s.Send(JsonConvert.SerializeObject(msg));
                    }
                };
            });
        }
示例#20
0
    public bool StartWebSocketServer() {
      WSRConfig cfg = WSRConfig.GetInstance();

      int port = cfg.WebSocket;
      if (port < 0) { return false; }

      if (cfg.WSSmooth)  filter1 = new DepthFilteredSmoothing();
      if (cfg.WSAverage) filter2 = new DepthAveragedSmoothing();

      ImageFormat format = cfg.WSType == "png" ? ImageFormat.Png : ImageFormat.Jpeg;

      Sockets = new List<IWebSocketConnection>();
      Server = new WebSocketServer("ws://localhost:" + port);
      Server.Start(socket => {
        socket.OnOpen = () => {
          cfg.logInfo("WEBSCK", "Connected to: " + socket.ConnectionInfo.ClientIpAddress);
          lock (Sockets) { Sockets.Add(socket); }
        };
        socket.OnClose = () => {
          cfg.logInfo("WEBSCK", "Disconnected from: " + socket.ConnectionInfo.ClientIpAddress);
          lock (Sockets) { Sockets.Remove(socket); }
        };
        socket.OnMessage = message => {
          SendWebSocket(socket, GreenScreen(message), format);
        };
      });
      return true;
    }
示例#21
0
        public void Start()
        {
            List <IWebSocketConnection> sockets = new List <IWebSocketConnection>();

            Fleck.WebSocketServer server = new Fleck.WebSocketServer("ws://127.0.0.1:8181");

            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    Console.WriteLine("Connection open.");
                    sockets.Add(socket);
                };
                socket.OnClose = () =>
                {
                    Console.WriteLine("Connection closed.");
                    sockets.Remove(socket);
                };
                socket.OnMessage = message =>
                {
                    Console.WriteLine("Client says: " + message);
                    sockets.ToList().ForEach(s => s.Send(" client says:" + message));
                };
            });

            string input = Console.ReadLine();

            while (input != "exit")
            {
                sockets.ToList().ForEach(s => s.Send(input));
                input = Console.ReadLine();
            }
        }
示例#22
0
        public Connec()
        {
            asdassd.Add("MenuGetir", Getir);

            Method_Call M = new Method_Call();
            //Type Ty = Type.GetType("InanYalcin_FleckSoket.Model.Site." + message, true);
            //var b = Ty;
            //var Deger = M.Method(Ty,message );

            FleckLog.Level = LogLevel.Debug;
            var allSockets = new List<IWebSocketConnection>();
            var server = new WebSocketServer("ws://localhost:8181/consoleappsample");
            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    allSockets.Add(socket);
                };
                socket.OnClose = () =>
                {
                    allSockets.Remove(socket);
                };
                socket.OnMessage = message =>
                {
                    //var c = System.Activator.CreateInstance(Type.GetType("InanYalcin_FleckSoket.Model.Site." + message));
                    var c = asdassd[message]();
                    socket.Send(JsonConvert.SerializeObject(c, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }));
                    //allSockets.ToList().ForEach(s => s.Send("Echo: " + message));
                };
            });
        }
示例#23
0
        public static void Start()
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();

            FleckLog.Level = LogLevel.Debug;
            var allSockets = new List<IWebSocketConnection>();
            var server = new WebSocketServer("ws://0.0.0.0:8181");
            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    Debug.WriteLine("Open!");
                    allSockets.Add(socket);
                };
                socket.OnClose = () =>
                {
                    Debug.WriteLine("Close!");
                    allSockets.Remove(socket);
                };
                socket.OnMessage = message =>
                {
                    var jsonObj = serializer.Deserialize<MessageFormat>(message);
                    Debug.WriteLine("[username]: " + jsonObj.username);
                    Debug.WriteLine("[nickname]: " + jsonObj.nickname);
                    Debug.WriteLine("[content]: " + jsonObj.content);
                    Debug.WriteLine("");
                    string msg = String.Format("{0}: {1}", jsonObj.nickname, jsonObj.content);
                    allSockets.ToList().ForEach(s => s.Send(msg));
                };
            });
        }
示例#24
0
 public static void init()
 {
     FleckLog.Level = LogLevel.Debug;
     allSockets = new List<IWebSocketConnection>();
     server = new WebSocketServer("ws://localhost:1337");
     server.Start(socket =>
     {
         socket.OnOpen = () =>
         {
             Console.WriteLine("Open!");
             allSockets.Add(socket);
         };
         socket.OnClose = () =>
         {
             Console.WriteLine("Close!");
             allSockets.Remove(socket);
         };
         socket.OnMessage = message =>
         {
             Console.WriteLine(message);
             if (message == "SENDMEANIMAGE")
             {
                 Kinect.sendImage();
             }
         };
     });
 }
示例#25
0
 public void StartServer()
 {
     var server = new WebSocketServer("ws://localhost:10000");
     server.Start(ws =>
                      {
                          ws.OnOpen = () => OnOpenConnection(ws);
                  	});
 }
示例#26
0
        public void Initialize()
        {
            _server = new WebSocketServer(_port, "ws://localhost:" + _port + "/");

            // Nagle is a good algorithm, but not for games. Disable it.
            _server.ListenerSocket.NoDelay = true;

            _server.Start(OnConfig);
        }
示例#27
0
        public IActionResult server()
        {
            //websocket
            string ipAddress = string.Empty;
            var    host      = System.Net.Dns.GetHostEntry(Dns.GetHostName());

            List <IWebSocketConnection> sockets = new List <IWebSocketConnection>();

            foreach (var ip in host.AddressList)
            {
                if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                {
                    ipAddress = ip.ToString();
                    break;
                }
            }
            //string ipadd = "wss://panshubeinewfleck.azurewebsites.net";
            //ipadd = "ws://" + ipAddress + ":80";
            Fleck.WebSocketServer server = new Fleck.WebSocketServer("wss://" + ipAddress + ":8088");
            //Fleck.WebSocketServer server = new Fleck.WebSocketServer(ipadd);
            string path    = System.Environment.CurrentDirectory;
            bool   isexist = System.IO.File.Exists(path + "//panshubeiclub.pfx");

            if (isexist)
            {
                server.Certificate = new X509Certificate2(path + "//panshubeiclub.pfx", "panshubei");
            }
            //server.Certificate = new X509Certificate2(path+"//panshubei.club.pfx", "panshubei");
            try
            {
                server.Start(socket =>
                {
                    Trace.WriteLine("FleckSocket=>server.start");
                    socket.OnOpen = () =>
                    {
                        Trace.WriteLine("FleckSocket=>server.open");
                        sockets.Add(socket);
                    };
                    socket.OnClose = () =>
                    {
                        Trace.WriteLine("FleckSocket=>server.close");
                        sockets.Remove(socket);
                    };
                    socket.OnMessage = message =>
                    {
                        Trace.WriteLine("FleckSocket=>server.message and the message is : " + message);
                        sockets.ToList().ForEach(s => s.Send(" client says: " + message));
                    };
                });
            }
            catch (Exception ex)
            {
                Trace.WriteLine("FleckSocket=>err" + ex.ToString());
                throw;
            }
            return(View());
        }
示例#28
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;
        }
    static void Main()
    {
        FleckLog.Level = LogLevel.Error;

        var renderers = new ConcurrentDictionary<IWebSocketConnection, IRenderer>();

        var proxyRenderer = new ProxyRenderer();
            proxyRenderer.AddRenderer( new ConsoleRenderer());
        var allSockets = new List<IWebSocketConnection>();
        var server = new WebSocketServer("ws://localhost:8080/websession");
        server.Start(socket =>
        {
            socket.OnOpen = () =>
            {
                allSockets.Add(socket);
                renderers[socket] = new WebRenderer(socket);
                proxyRenderer.AddRenderer(renderers[socket]);

                if (allSockets.Count == 1)
                {
                    var size = new Size(10, 15);
                    var dto = new InitMessageDto(new SizeDto(size));
                    socket.Send(dto.ToJson());

                    var engine = new GameEngine(size, new ConsoleInputListener(), proxyRenderer);
                    engine.Start();
                }
                else
                {
                    var size = new Size(10, 15);
                    var dto = new InitMessageDto(new SizeDto(size));
                    socket.Send(dto.ToJson());
                }
            };
            socket.OnClose = () =>
            {
                allSockets.Remove(socket);
                proxyRenderer.RemoveRenderer(renderers[socket]);

                IRenderer toRemove;
                renderers.TryRemove(socket, out toRemove);
            };
            socket.OnMessage = message =>
            {
                //Console.WriteLine(message);
                //allSockets.ToList().ForEach(s => s.Send("Echo: " + message));
            };
        });

        while (true)
        {
            Thread.Sleep(1000);
        }

           // Console.ReadLine();
    }
示例#30
0
        /// <summary>
        /// Start the server listening.
        /// </summary>
        /// <param name="sHostURI"></param>
        public void Start(String sHostURI)
        {
            // Stop it.
            Stop();

            // Start the server listening on the port specified by args.
            Server = new WebSocketServer(sHostURI);
            Server.Start(OnClient);
            Running = true;
        }
示例#31
0
 public void StartServer()
 {
     var server = new WebSocketServer("ws://localhost:8080");
     server.Start(socket =>
     {
         socket.OnOpen = () => { Connections.Add(socket); socket.Send(Serializer.Rewind()); };
         socket.OnClose = () => Connections.Remove(socket);
         socket.OnMessage = (string m) => OnMessage(socket, m);
     });
 }
 public void Start()
 {
     WebSocketServer = new Fleck.WebSocketServer(URL);
     WebSocketServer.Start(socket =>
     {
         socket.OnOpen    = () => OnOpen(socket);
         socket.OnClose   = () => OnClose(socket);
         socket.OnMessage = m => OnMessage(socket, m);
     });
 }
示例#33
0
 public AuthenticationHandler()
 {
     var server = new WebSocketServer("ws://localhost:5000/authenticate");
     server.Start(socket =>
     {
         socket.OnOpen = () => Console.WriteLine("[Authenticate] " + socket.ConnectionInfo.ClientIpAddress + " connected with Guid: " + socket.ConnectionInfo.Id);
         socket.OnClose = () => removeUserFromList(socket);
         socket.OnMessage = jsonMessage => startAuthentication(jsonMessage, socket);
     });
 }
示例#34
0
 public Communication(Action connectCallback, Action<string[]> messageCallback)
 {
     Server = new WebSocketServer("ws://0.0.0.0:11650/socket");
     Server.Start(socket =>
     {
         socket.OnOpen = () => SetSocket(socket, connectCallback);
         socket.OnClose = () => Connected = false;
         socket.OnMessage = message => messageCallback(Split(message));
     });
 }
示例#35
0
        public void FeatureParityTest()
        {
            using (var server = new WebSocketServer("http://127.0.0.1:8989"))
            {
                server.Start(ConfigureIntegrationTestConnection);
                SendIntegrationTestMessages();
            }

            AssertIntegrationTestMessages();
        }
示例#36
0
        public void Start(int portNumber)
        {
            var server = new WebSocketServer("ws://localhost:" + portNumber);

            server.Start(socket =>
            {
                socket.OnOpen = () => OnClientConnected(socket);
            });

            _server = server;
        }
示例#37
0
        public MainWindow()
        {
            //hardcoded vJoyFeeder class for testing, is this where we want to call the class?
            vJoyFeeder vj = new vJoyFeeder();

            InitializeComponent();

            //var server = new WebSocketServer("http://localhost:8080");

            //server.Start(socket =>
            //{
            //    socket.OnOpen = () => Console.WriteLine("Open!");
            //    socket.OnClose = () => Console.WriteLine("Close!");
            //    //socket.OnMessage = message => socket.Send(message);

            //});

            FleckLog.Level = LogLevel.Debug;
            var allSockets = new List<IWebSocketConnection>();
            var server = new WebSocketServer("localhost:8181");
            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    Console.WriteLine("Open!");
                    allSockets.Add(socket);
                };
                socket.OnClose = () =>
                {
                    Console.WriteLine("Close!");
                    allSockets.Remove(socket);
                };
                socket.OnMessage = message =>
                {
                    // This is the only line of code that outputs to console. Each instruction given to parser will return a string, which
                    // can then be used in the windows APP UI.

                    //Console.WriteLine(vj.parseInstructionString(message));
                    allSockets.ToList().ForEach(s => s.Send("Echo: " + message));
                    allSockets.ToList().ForEach(s => s.Send("Return: " + vj.parseInstructionString(message)));
                };
            });

            var input = Console.ReadLine();
            while (input != "exit")
            {
                foreach (var socket in allSockets.ToList())
                {
                    socket.Send(input);
                }

                input = Console.ReadLine();
            }
        }
        public void Start()
        {
            List<IWebSocketConnection> sockets = new List<IWebSocketConnection>();
            WebSocketServer server = new WebSocketServer("ws://127.0.0.1:60000");

            server.Start(socket =>
            {
                socket.OnOpen = () => { Console.WriteLine("Connection opened"); sockets.Add(socket); UpdateTime(sockets); };
                socket.OnClose = () => { Console.WriteLine("Connection closed"); sockets.Remove(socket); };
                socket.OnMessage = message => { Console.WriteLine("Message from client: " + message); sockets.ToList().ForEach(s => s.Send("Message received: " + message)); };
            });
        }
示例#39
0
        /// <summary>
        /// Start web socket server.
        /// </summary>
        private void StartWebSocketServer()
        {
            // stop web socket server in case a server is already running.
            StopWebSocketServer();

            _limitFpsStopwatch.Start();

            _webSocketServer = new Fleck.WebSocketServer(string.Format("ws://0.0.0.0:{0}", Port));
            _webSocketServer.Start(socket =>
            {
                socket.OnOpen    = () => OnClientConnect(socket);
                socket.OnClose   = () => OnClientDisconnect(socket);
                socket.OnMessage = message => OnClientMessage(socket, message);
            });
        }
示例#40
0
 WebSocketTest()
 {
     server = new Fleck.WebSocketServer("ws://localhost:8123");
     //something.
     server.Start(socket =>
     {
         socket.OnOpen    = () => allSockets.Add(socket);
         socket.OnClose   = () => allSockets.Remove(socket);
         socket.OnMessage = message =>
         {
             foreach (var s in allSockets)
             {
                 s.Send(message);
             }
         };
     });
 }
示例#41
0
        public OverlayServer(OverlayServerConfig config)
        {
            this.config = config;

            try
            {
                var WSS = new Fleck.WebSocketServer($"ws://127.0.0.1:{config.Port}");
                // Set the websocket listeners
                WSS.Start(connection =>
                {
                    connection.OnOpen  += () => OnWsConnectionOpen(connection);
                    connection.OnClose += () => OnWSConnectionClose(connection);
                });
            } catch (Exception e)
            {
                logger.Fatal(e, "failed so start websocket server");
            }
        }
        public void Start()
        {
            FleckLog.Level = LogLevel.Debug;

            if (_server == null)
            {
                Logger.Instance().Info(" >> Starting Web Socket Server...");

                // start request manager
                //
                RequestManager.Instance().Start();

                var serverLocation = string.Format("ws://localhost:{0}", 8181);
                _server = new Fleck.WebSocketServer(serverLocation);
                _server.Start(ServerConfig);

                Logger.Instance().InfoWithFormat(" >> Running Web Socket Server {0}.", _server.Location);
            }
        }
示例#43
0
 public void Start()
 {
     _server.Start(socket =>
     {
         socket.OnOpen = () =>
         {
             _log.WriteInfo("----Connect client----");
             lock (_obj) _sockets.Add(socket);
         };
         socket.OnClose = () =>
         {
             _log.WriteInfo("Client closed");
             lock (_obj) _sockets.Remove(socket);
         };
         socket.OnPing = msg =>
         {
             socket.SendPong(Encoding.UTF8.GetBytes("pong"));
         };
     });
 }
示例#44
0
        /// <summary>
        /// Main entry point.
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            ParseCliParameters(ref args);

            var host      = Dns.GetHostEntry(Dns.GetHostName());
            var ipAddress = "127.0.0.1";

            foreach (var ip in host.AddressList)
            {
                if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                {
                    ipAddress = ip.ToString();
                    break;
                }
            }

            var webSocketServer = new Fleck.WebSocketServer($"ws://{ipAddress}:{ServerPort}");

            webSocketServer.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    Console.WriteLine($"Connection Opened by {socket.ConnectionInfo.ClientIpAddress}.");
                    clients.Add(socket);
                    countClients++;
                };

                socket.OnClose = () =>
                {
                    Console.WriteLine($"Connection Closed by {socket.ConnectionInfo.ClientIpAddress}.");
                    clients.Remove(socket);
                    countClients--;
                };
            });

            Console.WriteLine("WebSocket Server Started!");

            StartArduino();

            Console.ReadKey();
        }
示例#45
0
        /// <summary>
        /// Entry point for the application.
        /// </summary>
        /// <param name="args">
        /// Command-line arguments for this console application are as follows:
        ///
        /// Param 1: Server name. Cannot contain spaces. Valid characters are A-Z, a-z, 0-9, _, -, and .
        /// Param 2: Port number. Must be between 1000 and 65535.
        /// Param 3: Admin password. Cannot contain spaces.
        ///
        /// A sample run might look like this, if invoked manually: C:\> PokerServer.exe MyName 8500 MyPass
        /// </param>
        static void Main(string[] args)
        {
            if (args.Length != 3)
            {
                ExitWithError("Invalid number of command-line arguments (Password can not contain spaces).");
            }

            int portNumber;

            if (!int.TryParse(args[1], out portNumber))
            {
                ExitWithError("Port number is invalid.");
            }
            if (portNumber < 1000 || portNumber > 65535)
            {
                ExitWithError("Port number is outside valid range [1000-65535].");
            }
            if (!Regex.IsMatch(args[0], @"^[a-zA-Z0-9_\-.]+$"))
            {
                ExitWithError("Name is invalid. Valid name characters are A-Z, a-z, 0-9, _, -, and .");
            }

            Name = args[0];
            Port = portNumber;

            // Set up the named pipe server and the initial async connection listener.
            NamedPipeServerStream nps = new NamedPipeServerStream("wss" + Process.GetCurrentProcess().Id, PipeDirection.Out, 1, PipeTransmissionMode.Message, PipeOptions.Asynchronous);

            nps.BeginWaitForConnection(PipeHandler, nps);

            cs = new CardServer(args[2]);

            server = new Fleck.WebSocketServer("ws://" + Environment.MachineName + ":" + Port + "/");
            server.Start(s => cs.NewClient((WebSocketConnection)s));

            while (true)
            {
                Console.ReadKey();
            }
        }
示例#46
0
        public WebSocketServer(string ip, int port, Action <string, Log.LogLevel> logDelegate)
        {
            GetPhysicallyInstalledSystemMemory(out memorySize);

            FleckLog.Level = LogLevel.Error + 1;
            Fleck.WebSocketServer server = new Fleck.WebSocketServer($"ws://{ip}:{port}");
            this.logDelegate = logDelegate;
            server.Start(serverConnected);

            try {
                IISManager.GetSites().ForEach(info => {
                    siteCurrentConnections.Add(new PerformanceCounter("Web Service", "Current Connections", info.Name));
                });
            }
            catch { }


            Timer timer = new Timer(1000);

            timer.Elapsed += Timer_Elapsed;
            timer.Start();
        }
示例#47
0
        public void Initialize()
        {
            string location = TTSettings.GetAppSetting <string>("hostingUrl", defaultVal: "ws://0.0.0.0:8082");

            _server = new Fleck.WebSocketServer(location);

            _server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    var clientInfo = new ClientInfo(socket.ConnectionInfo.Id, socket);
                    ClientInfo.TryAdd(socket.ConnectionInfo.Id, clientInfo);

                    var logMessage = "New client connected successfully. id = " + clientInfo.ConnectionGuid;
                    Logger.Current.Info(logMessage);


                    NotifySubscriber(_previousQuotes, clientInfo);
                };

                socket.OnError = OnError;

                socket.OnClose = () =>
                {
                    var found = ClientInfo.FirstOrDefault(ci => ci.Key == socket.ConnectionInfo.Id).Value;
                    if (found != null)
                    {
                        ClientInfo.TryRemove(socket.ConnectionInfo.Id, out found);
                        var logMessage = "Client disconnected. id = " + found.ConnectionGuid;
                        Logger.Current.Info(logMessage);
                    }
                };

                socket.OnMessage = message => OnMessageFromClient(message, socket);
            });
        }
示例#48
0
        static void Main(string[] args)
        {
            var container = new WindsorContainer();

            container.Install(FromAssembly.This());
            container.Install(FromAssembly.Named("Router"));
            container.Install(FromAssembly.Named("Repository"));
            //container.Install(FromAssembly.Named("Mapper"));

            //container.Register(Castle.MicroKernel.Registration.Component.For<Router.Router>().ImplementedBy<Router.Router>());
            //container.Register(Castle.MicroKernel.Registration.Component.For<Router.Styler>().ImplementedBy<Router.Styler>());
            //container.Register(Castle.MicroKernel.Registration.Component.For<Router.IStyler>().ImplementedBy<Router.IStyler>());
            //container.Register(Castle.MicroKernel.Registration.Component.For<Repository.MapRepo>().ImplementedBy<Repository.MapRepo>());

            var router = container.Resolve <Router.Router>();

            //    private readonly IRepository<State> _stateRepo;
            //private readonly IRepository<Connection> _connectionRepo;
            //private readonly IRepository<User> _userRepo;
            //private readonly IRepository<NavCategory> _navCategoryRepo;
            //private readonly IRepository<StatusBarItem> _statusBarRepo;
            //private readonly IRepository<Subscription> _subscriptionRepository;
            //private readonly IStyler _styler;


            _allSockets = new List <IWebSocketConnection>();
            var websocketServer = new Fleck.WebSocketServer("ws://127.0.0.1:58951");

            websocketServer.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    Console.WriteLine("Open!");
                    CreateConnection(socket);
                    _allSockets.Add(socket);
                };
                socket.OnClose = () =>
                {
                    Console.WriteLine("Close!");
                    DeleteConnection(socket);
                    _allSockets.Remove(socket);
                };
                socket.OnMessage = message =>
                {
                    switch (message)
                    {
                    case "seed":
                        var initializer = container.Resolve <Repository.SockMinInitializer>();
                        var context     = container.Resolve <Repository.SockMinDbContext>();
                        initializer.Seed(context);
                        break;

                    case "query1":
                        socket.Send(@"content~<table><tr><td>Name</td><td>Address</td><td>Phone</td></tr>
                                    <tr><td>Jeff</td><td>the place</td><td>234234</td></tr></table>");
                        Console.WriteLine(message + " received");
                        break;

                    case "query2":
                        socket.Send(@"content~<table><tr><td>Year</td><td>Quarter</td><td>Sales(£k)</td></tr>
                                    <tr><td>2016</td><td>Q1</td><td>437</td></tr></table>");
                        Console.WriteLine(message + " received");
                        break;

                    case "query3":
                        socket.Send(@"content~<table><tr><td>Computer</td><td>Software</td><td>Version</td></tr>
                                    <tr><td>TG-IIS01</td><td>Amadeus</td><td>1.2.3</td></tr></table>");
                        Console.WriteLine(message + " received");
                        break;

                    case "query4":
                        socket.Send(@"content~
<svg class='chart' width='420' height='150' aria-labelledby='title desc' role='img'>
  <title id = 'title'> A bar chart showing information </title>
  <desc id = 'desc'> 4 apples; 8 bananas; 15 kiwis; 16 oranges; 23 lemons </desc>
     
       <g class='bar'>
    <rect width = '40' height='19'></rect>
    <text x = '45' y='9.5' dy='.35em'>4 apples</text>
  </g>
  <g class='bar'>
    <rect width = '80' height='19' y='20'></rect>
    <text x = '85' y='28' dy='.35em'>8 bananas</text>
  </g>
  <g class='bar'>
    <rect width = '150' height='19' y='40'></rect>
    <text x = '150' y='48' dy='.35em'>15 kiwis</text>
  </g>
  <g class='bar'>
    <rect width = '160' height='19' y='60'></rect>
    <text x = '161' y='68' dy='.35em'>16 oranges</text>
  </g>
  <g class='bar'>
    <rect width = '230' height='19' y='80'></rect>
    <text x = '235' y='88' dy='.35em'>23 lemons</text>
  </g>
</svg>");
                        Console.WriteLine(message + " received");
                        break;

                    case "query5":
                        socket.Send(@"content~<table><tr><td>Computer</td><td>Software</td><td>Version</td></tr>
                                    <tr><td>TG-IIS01</td><td>Amadeus</td><td>1.2.3</td></tr></table>");
                        Console.WriteLine(message + " received");
                        break;

                    default:
                        var command = message.Split(':');
                        switch (command[0])
                        {
                        case "updateState":
                            router.ChangeConnectionState(socket, command[1]);
                            break;

                        default:
                            break;
                        }
                        socket.Send("messages~" + message + " received");
                        Console.WriteLine(message + " received");
                        break;
                    }
                };
            });
            while (true)
            {
                System.Threading.Thread.Sleep(10000);
                foreach (var socket in _allSockets.ToList())
                {
                    socket.Send("status~" + DateTime.UtcNow.ToString("o") + " all is well on connection " + socket.ConnectionInfo.Id);
                }
            }
        }
示例#49
0
 public void Start()
 {
     _server = new WebSocketServer(GetUrl());
     _server.Start(MessageReceived);
 }
示例#50
0
        /// <summary>
        /// Entry point for the application.
        /// </summary>
        /// <param name="args">
        /// Command-line arguments for this console application are as follows:
        ///
        /// Param 1: Server name. Cannot contain spaces. Valid characters are A-Z, a-z, 0-9, _, -, and .
        /// Param 2: Port number. Must be between 1000 and 65535.
        /// Param 3: Admin password. Cannot contain spaces.
        ///
        /// A sample run might look like this, if invoked manually: C:\> PokerServer.exe MyName 8500 MyPass
        /// </param>
        static void Main(string[] args)
        {
            if (args.Length != 4)
            {
                args    = new string[4];
                args[0] = "FC";
                args[1] = "8000";
                args[2] = "abcd";
                args[3] = "127.0.0.1";

                Console.WriteLine("Enter Room Name:");
                args[0] = Console.ReadLine();
                Console.WriteLine("Enter Port No Bet 8000 & 9000:");
                args[1] = Console.ReadLine();
                Console.WriteLine("Enter Room Password:"******"Enter Hosting IP or D for auto detect:");
                args[3] = Console.ReadLine();
            }

            int portNumber;

            if (!int.TryParse(args[1], out portNumber))
            {
                ExitWithError("Port number is invalid.");
            }
            if (portNumber < 1000 || portNumber > 65535)
            {
                ExitWithError("Port number is outside valid range [1000-65535].");
            }
            if (!Regex.IsMatch(args[0], @"^[a-zA-Z0-9_\-.]+$"))
            {
                ExitWithError("Name is invalid. Valid name characters are A-Z, a-z, 0-9, _, -, and .");
            }

            Name = args[0];
            Port = portNumber;
            if (args[3].Equals("D"))
            {
                if (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
                {
                    throw new Exception("Network not available.");
                }

                IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());

                MachineIp = host
                            .AddressList
                            .FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork).ToString();
            }
            else
            {
                MachineIp = args[3];
            }

            // Set up the named pipe server and the initial async connection listener.
            NamedPipeServerStream nps = new NamedPipeServerStream("wss" + Process.GetCurrentProcess().Id, PipeDirection.Out, 1, PipeTransmissionMode.Message, PipeOptions.Asynchronous);

            nps.BeginWaitForConnection(PipeHandler, nps);

            cs = new CardServer(args[2]);

            try
            {
                //server = new Fleck.WebSocketServer("ws://" + Environment.MachineName + ":" + Port + "/");
                server = new Fleck.WebSocketServer("ws://" + MachineIp + ":" + Port + "/");
                server.Start(s => cs.NewClient((WebSocketConnection)s));
                Console.WriteLine("PID: " + Process.GetCurrentProcess().Id);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception: " + ex.Message);
            }

            while (true)
            {
                Console.ReadKey();
            }
        }
示例#51
0
        static void Main(string[] args)
        {
            FleckLog.Level = LogLevel.Debug;
            var allSockets = new List <SocketInfo>();
            var server     = new Fleck.WebSocketServer("ws://0.0.0.0:9146");

            //var x = new Fleck.websocketc
            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    Console.WriteLine("连接打开!");
                    var x = allSockets.Where(i => i.ID == socket.ConnectionInfo.Id.ToString()).FirstOrDefault();
                    if (x != null)
                    {
                        return;
                    }
                    allSockets.Add(new SocketInfo()
                    {
                        ID = socket.ConnectionInfo.Id.ToString(),
                        IWebSocketConnection = socket
                    });
                };
                socket.OnClose = () =>
                {
                    Console.WriteLine("连接关闭!");
                    var x = allSockets.Where(i => i.ID == socket.ConnectionInfo.Id.ToString()).FirstOrDefault();
                    if (x != null)
                    {
                        allSockets.Remove(x);
                    }
                    foreach (var item in allSockets)
                    {
                        item.IWebSocketConnection.Send($"{x.User}下线了");
                    }
                };
                socket.OnMessage = message =>
                {
                    if (string.IsNullOrEmpty(message))
                    {
                        return;
                    }
                    var fromUser = allSockets.Where(i => i.ID == socket.ConnectionInfo.Id.ToString()).FirstOrDefault();
                    if (fromUser != null && string.IsNullOrEmpty(fromUser.User))
                    {
                        fromUser.User = message;
                        foreach (var item in allSockets)
                        {
                            item.IWebSocketConnection.Send($"{message}上线啦。");
                        }
                        return;
                    }
                    Console.WriteLine($"{socket.ConnectionInfo.Id}:{message}");
                    foreach (var item in allSockets)
                    {
                        item.IWebSocketConnection.Send($"{fromUser.User}:{message}");
                    }
                    //allSockets.Select(i=>i.IWebSocketConnection).ToList().ForEach(s => s.Send($"{s.us}:{message} "));
                };
            });


            var input = Console.ReadLine();

            while (input != "exit")
            {
                foreach (var socket in allSockets.Select(i => i.IWebSocketConnection).ToList())
                {
                    socket.Send(input);
                }
                input = Console.ReadLine();
            }
        }
示例#52
0
        /// <summary>
        /// 开启服务器
        /// </summary>
        public static void Start()
        {
            try
            {
                FleckLog.Level = LogLevel.Error;
                server.Start(socket =>
                {
                    string MyConn = socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort;
                    socket.OnOpen = () =>
                    {
                        //Console.WriteLine("Open!");
                        SystemManager.Logger(new CSharpUtility.LogRec()
                        {
                            Info = "Open Connect", IP = MyConn, logTime = DateTime.Now
                        });
                        allSockets.Add(MyConn, socket);
                    };
                    socket.OnClose = () =>
                    {
                        //Console.WriteLine("Close!");
                        SystemManager.Logger(new CSharpUtility.LogRec()
                        {
                            Info = "Close Connect", IP = MyConn, logTime = DateTime.Now
                        });
                        allSockets.Remove(MyConn);
                    };
                    socket.OnMessage = Request =>
                    {
                        SystemManager.Logger(new CSharpUtility.LogRec()
                        {
                            Info = "Request:" + Request, IP = MyConn, logTime = DateTime.Now
                        });
                        ServerResponse.RequestType requestType = (ServerResponse.RequestType)Enum.Parse(typeof(ServerResponse.RequestType), Request.Substring(0, 3));
                        string Response = ServerResponse.ProcessRequest(Request, requestType);
                        string GameId   = string.Empty;
                        requestType     = (ServerResponse.RequestType)Enum.Parse(typeof(ServerResponse.RequestType), Response.Substring(0, 3));
                        switch (requestType)
                        {
                        case ServerResponse.RequestType.开始游戏:
                        case ServerResponse.RequestType.开始单机游戏:
                            socket.Send(Response);
                            // Key:GameID + IsHost Value:Connection
                            allGames.Add(Response.Substring(3, 6), MyConn);
                            break;

                        case ServerResponse.RequestType.初始化状态:
                        case ServerResponse.RequestType.回合结束:
                        case ServerResponse.RequestType.攻击行为:
                            //初始化状态是后手发起的,结果需要推送给双方
                            GameId = Request.Substring(3, 5);
                            SendToBoth(GameId, Response);
                            break;

                        case ServerResponse.RequestType.使用手牌:
                            GameId = Request.Substring(3, 5);
                            if (Response.Substring(3, 2) == CardUtility.strOK)
                            {
                                //使用动作完成后的战场状态
                                SendToBoth(GameId, Response.Substring(0, 3) + Response.Substring(5));
                            }
                            else
                            {
                                //需要后续操作,中断续行
                                SystemManager.Logger(new CSharpUtility.LogRec()
                                {
                                    Info = "Response:" + Response, IP = MyConn, logTime = DateTime.Now
                                });
                                socket.Send(Response);
                            }
                            break;

                        case ServerResponse.RequestType.结束游戏:
                            GameId = Request.Substring(3, 5);
                            //游戏字典去除,但是链接没有结束
                            // Key:GameID + IsHost Value:Connection
                            allGames.Remove(Request.Substring(3, 6));
                            bool CanRemove = true;
                            foreach (var item in allGames.Keys)
                            {
                                if (item.StartsWith(GameId))
                                {
                                    CanRemove = false;
                                    break;
                                }
                            }
                            if (CanRemove)
                            {
                                ServerResponse.RemoveGame(GameId);
                            }
                            break;

                        default:
                            SystemManager.Logger(new CSharpUtility.LogRec()
                            {
                                Info = "Response:" + Response, IP = MyConn, logTime = DateTime.Now
                            });
                            socket.Send(Response);
                            break;
                        }
                    };
                });
            }
            catch (SocketException)
            {
            }
            finally
            {
                // Stop listening for new clients.
            }
        }
示例#53
0
        public static void Init(string url)
        {
            if (socket == null)
            {
                socket = new Fleck.WebSocketServer(url);
                socket.RestartAfterListenError = true;

                FleckLog.LogAction = (level, message, ex) =>
                {
                    switch (level)
                    {
                    case LogLevel.Debug:
                        logger.Debug("WebSocket -> " + message, ex);
                        break;

                    case LogLevel.Error:
                        logger.Error("WebSocket -> " + message, ex);
                        break;

                    case LogLevel.Warn:
                        logger.Warn("WebSocket -> " + message, ex);
                        break;

                    default:
                        logger.Info("WebSocket -> " + message, ex);
                        break;
                    }
                };

                socket.Start(conn =>
                {
                    conn.OnOpen = () =>
                    {
                        if (connections.FirstOrDefault(x => x.ConnectionInfo.Id == conn.ConnectionInfo.Id) == null)
                        {
                            connections.Add(conn);
                        }
                        logger.Info("WebSocket -> new connection from: " + conn.ConnectionInfo.ClientIpAddress + " with GUID: " + conn.ConnectionInfo.Id);
                    };

                    conn.OnMessage = message =>
                    {
                        logger.Info("WebSocket -> Message received from: " + conn.ConnectionInfo.ClientIpAddress + " with GUID: " + conn.ConnectionInfo.Id);
                        WebSocketServer.SendMessage(message, conn.ConnectionInfo.Id);
                    };

                    conn.OnClose = () =>
                    {
                        connections.Remove(connections.First(x => x.ConnectionInfo.Id == conn.ConnectionInfo.Id));
                        logger.Info("WebSocket -> close connection from: " + conn.ConnectionInfo.ClientIpAddress + " with GUID: " + conn.ConnectionInfo.Id);
                    };

                    conn.OnBinary = binary =>
                    {
                        WebSocketServer.SendMessage(Encoding.UTF8.GetString(binary), conn.ConnectionInfo.Id);
                    };

                    conn.OnError = error =>
                    {
                        logger.Error("WebSocket -> Error with connection: " + conn.ConnectionInfo.ClientIpAddress + " and GUID: " + conn.ConnectionInfo.Id, error);
                    };
                });
                logger.Info("WebSocket server initialized for url: " + url);
            }
        }
        static void Main(string[] args)
        {
            _allSockets = new List <IWebSocketConnection>();
            _allMeans   = new Dictionary <string, decimal>();
            _allCounts  = new Dictionary <string, decimal>();

            var serverAddresses = new Dictionary <string, string>();

            //serverAddresses.Add("USA-WestCoast", "ws://127.0.0.1:58951");
            //serverAddresses.Add("USA-EastCoast", "ws://127.0.0.1:58952");
            serverAddresses.Add("UK", "ws://127.0.0.1:58953");
            serverAddresses.Add("EU-North", "ws://127.0.0.1:58954");
            //serverAddresses.Add("EU-South", "ws://127.0.0.1:58955");
            foreach (var serverAddress in serverAddresses)
            {
                _allMeans.Add(serverAddress.Key, 0m);
                _allCounts.Add(serverAddress.Key, 0m);
            }

            var thisNodeName        = ConfigurationSettings.AppSettings["thisNodeName"];        //for example "UK"
            var serverSocketAddress = serverAddresses.First(x => x.Key == thisNodeName);

            serverAddresses.Remove(thisNodeName);

            var websocketServer = new Fleck.WebSocketServer(serverSocketAddress.Value);

            websocketServer.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    Console.WriteLine("Open!");
                    _allSockets.Add(socket);
                };
                socket.OnClose = () =>
                {
                    Console.WriteLine("Close!");
                    _allSockets.Remove(socket);
                };
                socket.OnMessage = message =>
                {
                    Console.WriteLine(message + " received");

                    var parameters         = message.Split('~');
                    var remoteHost         = parameters[0];
                    var remoteMean         = decimal.Parse(parameters[1]);
                    var remoteCount        = decimal.Parse(parameters[2]);
                    _allMeans[remoteHost]  = remoteMean;
                    _allCounts[remoteHost] = remoteCount;
                };
            });
            while (true)
            {
                //evaluate my local average and count
                Random rand = new Random(DateTime.Now.Millisecond);
                _localMean  = 234.00m + (rand.Next(0, 100) - 50) / 10.0m;
                _localCount = 222m + rand.Next(0, 100);

                //evaluate my local aggregate average using means and counts sent from all other nodes
                //could publish aggregate averages to other nodes, if you wanted to monitor disagreement between nodes
                var total_mean_times_count = 0m;
                var total_count            = 0m;
                foreach (var server in serverAddresses)
                {
                    total_mean_times_count += _allCounts[server.Key] * _allMeans[server.Key];
                    total_count            += _allCounts[server.Key];
                }
                //add on local mean and count which were removed from the server list earlier, so won't be processed
                total_mean_times_count += (_localMean * _localCount);
                total_count             = total_count + _localCount;

                _localAggregate_average = (total_mean_times_count / total_count);
                _localAggregate_count   = total_count;

                Console.WriteLine("local aggregate average = {0}", _localAggregate_average);

                System.Threading.Thread.Sleep(10000);
                foreach (var serverAddress in serverAddresses)
                {
                    using (var wscli = new ClientWebSocket())
                    {
                        var tokSrc = new CancellationTokenSource();
                        using (var task = wscli.ConnectAsync(new Uri(serverAddress.Value), tokSrc.Token))
                        {
                            task.Wait();
                        }

                        using (var task = wscli.SendAsync(new ArraySegment <byte>(Encoding.UTF8.GetBytes(thisNodeName + "~" + _localMean + "~" + _localCount)),
                                                          WebSocketMessageType.Text,
                                                          false,
                                                          tokSrc.Token
                                                          ))
                        {
                            task.Wait();
                        }
                    }
                }
            }
        }