Ejemplo n.º 1
0
        public WebSocket conectarse(string direccion)
        {
            _entradaSalida.escribeInfoText(_textosConsola.getTexto("strIntentoConexionCliente") + direccion);

            _ws            = new WebSocketSharp.WebSocket(direccion);
            _ws.Log.Output = (_, __) => { };//desabilitamos el log para que no ensucie la pantalla

            _ws.OnMessage += (sender, e) =>
            {
                Mensaje men = JsonConvert.DeserializeObject <Mensaje>(e.Data);
                _entradaSalida.escribeInfo("");
                _entradaSalida.escribeInfo(men.usuario + ":" + men.str);
                muestraUsuarioActual();
            };
            _ws.OnError += (sender, e) =>
            {
                _entradaSalida.escribeInfoError(_textosConsola.getTexto("webSocketError") + " " + e.Message);
            };
            _ws.OnClose += (sender, e) =>
            {
                _entradaSalida.escribeInfoError(_textosConsola.getTexto("webSocketCerrado"));
            };

            try
            {
                _ws.Connect();
            }
            catch (Exception e)
            {
                _entradaSalida.escribeInfoError(_textosConsola.getTexto("webSocketError") + " :" + e.Message);
            }

            return(_ws);
        }
Ejemplo n.º 2
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();
            }
        }
Ejemplo n.º 3
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);
                }
            }
        }