예제 #1
0
        public void iniciarServidor(string direccion)
        {
            _lecturaEscritura.escribeInfoWarm(_textosConsola.getTexto("modoServidor"));

            FleckLog.Level   = Fleck.LogLevel.Error;
            _listaWebSockets = new List <IWebSocketConnection>();
            var server = new WebSocketServer(direccion);

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

                socket.OnClose = () =>
                {
                    muestraFinConexion(socket);
                    _listaWebSockets.Remove(socket);
                };

                socket.OnMessage = (message) =>
                {
                    _lecturaEscritura.escribeInfoText(_textosConsola.getTexto("strMensajeChat") + " " + message);
                    _listaWebSockets.ForEach(s =>
                    {
                        if (socket.ConnectionInfo.Id != s.ConnectionInfo.Id)
                        {
                            s.Send(message);
                        }
                    }
                                             );
                };

                socket.OnPing = (b) =>
                {
                    socket.SendPong(b);
                };
            });

            var input = _lecturaEscritura.leeEntrada();

            while (input != _textosConsola.getTexto("comandoSalir"))
            {
                foreach (var socket in _listaWebSockets)
                {
                    socket.Send(input);
                }

                input = _lecturaEscritura.leeEntrada();
            }
        }
예제 #2
0
        public void inicia()
        {
            _entradaSalida.escribeInfoText(_textosConsola.getTexto("Bienvenida"));

            ICliente clienteWS = _serviceProvider.GetService <ICliente>();

            using (WebSocket ws = clienteWS.conectarse("ws://127.0.0.1:" + _puerto.ToString()))
            {
                if (ws.ReadyState != WebSocketState.Closed)
                {
                    //modo Cliente
                    _entradaSalida.escribeInfoWarm(_textosConsola.getTexto("modoCliente"));
                    clienteWS.establecerNombreUsuario();

                    clienteWS.iniciaChat();
                }
                else
                {
                    //modo Servidor
                    IServidor servidor = _serviceProvider.GetService <IServidor>();
                    servidor.iniciarServidor("ws://127.0.0.1:" + _puerto);
                }
            }
        }