Ir para conteúdo
  • ×   Você colou conteúdo com formatação.   Remover formatação

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.

  • Conteúdo Similar

    • Por Gilberto Jr
      Boa noite.
      Eu fiz esse chat usando socket.io com NODE JS.
      Esta funcionando perfeito. 
       
      Porem eu queria implementar duas coisas nele.
      Queria que quando chegasse uma mensagem, aparecesse uma notificação informando o nome da pessoa que enviou, e também parte da mensagem.
       
      E também, quando chegasse uma mensagem, mudar o TITTLE do HTML pra parte da mensagem.
       
      Mas isso deve acontecer, somente no browser das pessoas que receberem a mensagem. A pessoa que enviou, não deve receber a notificação e também o nem deve mudar o TITLE da pagina HTML.
       
      Abaixo segue o código do FRONT END.
      <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Chat Sistema Distribuido</title> <script src="jquery.min.js"></script> <script src="socket.io.js"></script> <link rel="stylesheet" href="style.css"> </head> <body> <form id="chat"> <input type="text" name="username" placeholder="Digite seu usuário"> <div class="messages"></div> <input type="text" name="message" placeholder="Digite sua mensagem"> <button type="submit">Enviar</button> </form> <script type="text/javascript"> var socket = io('http://localhost:3000'); function renderMessage(message){ $('.messages').append('<div class="message"><strong>'+ message.author +'</strong>:<br/>&nbsp&nbsp'+ message.message +'</div>') }; socket.on('previousMessages', function(messages){ for(message of messages){ renderMessage(message); }; }); socket.on('receivedMessage', function(message){ renderMessage(message); }); $('#chat').submit(function(event){ event.preventDefault(); var author = $('input[name=username]').val(); var message = $('input[name=message]').val(); if(author.length && message.length){ var messageObject = { author: author, message: message, }; renderMessage(messageObject); socket.emit('sendMessage', messageObject); } }); </script> </body> </html>  
      Abaixo o código da pagina server.js
      const express = require('express'); const path = require('path'); const app = express(); const server = require('http').createServer(app); const io = require('socket.io')(server); app.use(express.static(path.join(__dirname, 'public'))); app.set('views', path.join(__dirname, 'public')); app.engine('html', require('ejs').renderFile); app.set('view engine', 'html'); app.use('/', (req, res) => { res.render('index.html'); }); let messages = []; io.on('connection', socket => { console.log(`Socket Conectado: ${socket.id}`); socket.emit('previousMessages', messages); socket.on('sendMessage', data =>{ messages.push(data); socket.broadcast.emit('receivedMessage', data); }); }); server.listen(3000); Se alguém puder me ajudar.
       
      Obrado
      Gilberto Jr
    • Por JoaoVituBR
      Olá, eu tenho 2 servidores com IP diferentes e usuários distribuídos entre os dois

      eu gostaria de saber oque eu posso fazer para que o usuário que esta conectado no servidor 1 possa se comunicar com o usuário que está no servidor 2 sem usar MySql.
    • Por Muloo
      Olá, bom dia, boa tarde ou boa noite, estou tendo um problema, com um sistema que estou criando, agradeço a quem puder ajudar. Então, esse sistema basicamente passa um "protocolo" para os servidor e ele retorna um objeto, e vice-versa, porém, ao finalizar o cliente e reabrir sem fazer o mesmo com o servidor, é causado um erro no servidor, e ao tentar fazer algum retorno de um objeto após re-abrir o cliente é causado um erro.
      Erro no server ao fechar o cliente:

      java.net.SocketException: Connection reset     at java.net.SocketInputStream.read(SocketInputStream.java:210)     at java.net.SocketInputStream.read(SocketInputStream.java:141)     at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)     at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)     at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)     at java.io.InputStreamReader.read(InputStreamReader.java:184)     at java.io.BufferedReader.fill(BufferedReader.java:161)     at java.io.BufferedReader.readLine(BufferedReader.java:324)     at java.io.BufferedReader.readLine(BufferedReader.java:389)     at main.java.Manager.run(Manager.java:45)
      Erro no cliente ao reabrir e tentar obter o objeto:

      java.io.StreamCorruptedException: invalid stream header: 73720013     at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:866)     at java.io.ObjectInputStream.<init>(ObjectInputStream.java:358)     at main.java.controllers.VendedoresUI.load(VendedoresUI.java:69)     at main.java.controllers.VendedoresUI.initialize(VendedoresUI.java:54)     at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)     at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)     at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3214)     at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175)     at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148)     at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124)     at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104)     at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097)     at main.java.controllers.Controller.loadUI(Controller.java:150)     at main.java.controllers.Controller.changeUI(Controller.java:111)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)     at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)     at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1769)     at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)     at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)     at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)     at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)     at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)     at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)     at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)     at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)     at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)     at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)     at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)     at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)     at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)     at javafx.event.Event.fireEvent(Event.java:198)     at javafx.scene.Scene$ClickGenerator.postProcess(Scene.java:3470)     at javafx.scene.Scene$ClickGenerator.access$8100(Scene.java:3398)     at javafx.scene.Scene$MouseHandler.process(Scene.java:3766)     at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)     at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)     at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)     at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:394)     at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)     at java.security.AccessController.doPrivileged(Native Method)     at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$353(GlassViewEventHandler.java:432)     at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)     at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:431)     at com.sun.glass.ui.View.handleMouseEvent(View.java:555)     at com.sun.glass.ui.View.notifyMouse(View.java:937)     at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)     at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)     at java.lang.Thread.run(Thread.java:748)
      1. Classes do server:
      1.1. Server.java

      public class Server extends Thread{     public Server(){}     public void run() {         try{             ServerSocket listener = new ServerSocket(4444);             listener.setSoTimeout(0);             System.out.println("Server is now running");             try {                 while (true) {                     Socket socket = listener.accept();                     new Manager(socket).start();                 }             } finally {                 listener.close();             }         } catch (IOException ioexception){             System.out.println("\u001B[31mError opening server, more info: ");             System.out.println(ioexception);             System.out.println("Closing server...");             System.exit(0);         }     } }
      1.2. Manager.java

      public class Manager extends Thread{     private Socket socket;     private BufferedReader in;     private PrintWriter out;     public Manager(Socket socket){         this.socket = socket;         System.out.println("\u001B[32m" + socket.getLocalAddress() + ":" + socket.getPort() + " connected");     }     @Override     public void run() {         try {             out = new PrintWriter(socket.getOutputStream(), true);             out.println("Connected");             while(true) {                 ObjectOutputStream objectOutput = new ObjectOutputStream(socket.getOutputStream());                 in = new BufferedReader(new InputStreamReader(socket.getInputStream()));                 if(in.readLine().contains(Protocols.VENDEDOR_GET_ALL)) {                     ResultSet res = SQLManager.Query("SELECT * FROM vendedores");                     List<Vendedor> list = new ArrayList<>();                     while (res.next()) {                         Vendedor vendedor = new Vendedor();                         vendedor.setNOME(res.getString("NOME"));                         vendedor.setCPF(res.getString("CPF"));                         vendedor.setCONTATO(res.getString("CONTATO"));                         vendedor.setCONTA(res.getInt("CONTA"));                         vendedor.setBANCO(res.getInt("BANCO"));                         vendedor.setAGENCIA(res.getString("AGENCIA"));                         vendedor.setCORRENTE(res.getString("CORRENTE"));                         list.add(vendedor);                     }                     objectOutput.writeObject(list);                 }                 objectOutput.flush();             }         } catch (IOException e) {             System.out.println("\u001B[31m" + socket.getLocalAddress() + ":" + socket.getPort() + " disconnected");             e.printStackTrace();             interrupt();         } catch (SQLException | ClassNotFoundException e) {             Logger.getLogger(Manager.class.getName()).log(Level.SEVERE, null, e);         }     } }
      2. Classes do Client
      2.1. ClientSocket.java

      public class ClientSocket {     private static Socket socket = null;     private static BufferedReader in;     private static PrintWriter out;     public static void load(){         try {             socket = new Socket("127.0.0.1", 4444);             in = new BufferedReader(                     new InputStreamReader(socket.getInputStream()));             out = new PrintWriter(socket.getOutputStream(), true);             System.out.print(ClientSocket.getIn().readLine());         } catch(IOException ioexception){             Logger.getLogger(ClientSocket.class.getName()).log(Level.SEVERE, null, ioexception);         }     }     public static Socket getSocket() {         return socket;     }     public static BufferedReader getIn() {         return in;     }     public static PrintWriter getOut() {         return out;     } }
      2.2 VendedoresUI.java

      public class VendedoresUI implements Initializable {     @FXML     private TableView<Vendedor> table;     @FXML     private TableColumn<?, ?> colName;     @FXML     private TableColumn<?, ?> colCPF;     @FXML     private TableColumn<?, ?> colContato;     @FXML     private TableColumn<?, ?> colConta;     @FXML     private TableColumn<?, ?> colBanco;     @FXML     private TableColumn<?, ?> colAgencia;     @FXML     private TableColumn<?, ?> colCorrente;     ObservableList<Vendedor> list;     @Override     public void initialize(URL location, ResourceBundle resources) {         load();     }     private void load(){         try {             if(ClientSocket.getSocket().isClosed()){                 ClientSocket.load();             }             PrintWriter escritor = new PrintWriter(ClientSocket.getSocket().getOutputStream(), true);             escritor.println(Protocols.VENDEDOR_GET_ALL);             ObjectInputStream obi = new ObjectInputStream(ClientSocket.getSocket().getInputStream());             List<Vendedor> mList = (List<Vendedor>) obi.readObject();             list = FXCollections.observableArrayList(mList);             colName.setCellValueFactory(new PropertyValueFactory<>("NOME"));             colCPF.setCellValueFactory(new PropertyValueFactory<>("CPF"));             colContato.setCellValueFactory(new PropertyValueFactory<>("CONTATO"));             colConta.setCellValueFactory(new PropertyValueFactory<>("CONTA"));             colBanco.setCellValueFactory(new PropertyValueFactory<>("BANCO"));             colAgencia.setCellValueFactory(new PropertyValueFactory<>("AGENCIA"));             colCorrente.setCellValueFactory(new PropertyValueFactory<>("CORRENTE"));             table.setItems(list);         } catch (IOException | ClassNotFoundException e) {             e.printStackTrace();         }     } }
    • Por jp_li
      Possuo uma MainFrame e uma classe Cliente e estou tentando fazer uma conexão servidor/cliente.
      Integrei o servidor dentro da MainFrame e gostaria de enviar mensagens para meu cliente, de forma que o cliente receba mensagens com valores dentro da mainFrame.
      Dentro da main eu abri a conexão Socket:
      ServerSocket server = new ServerSocket(3001);         Socket s = server.accept();                  System.out.println("Conectado!");         DataOutputStream dcs = new DataOutputStream(s.getOutputStream());         dcs.writeUTF("Bem vindo, você se conectou!");
      E possuo a classe Leitor:

             
      public class Leitor extends SwingWorker<Void, Double>  {                                                  Random rand = new Random();                  @Override         protected  Void doInBackground() throws InterruptedException, IOException {                            while (!flag) {                     Double valor =(rand.nextDouble() * 100);                     publish(valor);                                          if (valor > 90) {                        newlbl.setText ("A temperatura está alta!");                                                                  }                     else if (valor < 15) {                         newlbl.setText ("A temperatura está baixa!");                                              }                     if(valor >15 & valor <90) {                         newlbl.setText("Temperatura estável");                                         }                     Thread.sleep(7500);                                    }                                                 return null;         } Gostaria que em cada if dentro da void doInBackground eu pudesse enviar a mesma mensagem que eu estou setando(vai ficar se atualizando sempre, pois estou gerando valores aleatorios), usando o dcs.writeUTF(), porém preciso que a classe leitor possuo o Socket s, e o dataOutputStream dcs. Qual seria a solução? 

      Essa é minha class Cliente.java:
        public static void main(String[] args) {         try {         Socket s = new Socket("127.0.0.1", 3001);                 DataInputStream dis = new DataInputStream(s.getInputStream());                 String msg = dis.readUTF();         System.out.println(msg);                 }catch (Exception e){}     }  
    • Por WBS DIGITAL
      Estou tentando chamar o ip e porta atraves de um arquivo properties num sisteminha de chat criado em java, mas não estou conseguindo fazer isso, segue o codigo.
       
      Servidor chat
      public static void main(String[] args) throws IOException{ wbsCliente = new Vector(); try { ServerSocket s = new ServerSocket(2222); while (true){ System.out.print("Aguardando usuarios..."); Socket wbsConexao = s.accept(); System.out.println("Conectado!"); Thread t = new WbsChatSocket (wbsConexao); t.start(); } } catch(IOException e) { System.out.println("IOException:" + e); } } Cliente Chat
       
      public static void main(String[] args){ try { Properties pos = new Properties(); //carregas as propriedades do arquivo de configuracoes pos.load( new FileInputStream("wbsDados.properties") ); //não sei como colocar e chamar os dados do properties neste socket abaixo Socket wbsConexao = new Socket("127.0.0.1", 2222); PrintStream saida = new PrintStream(wbsConexao.getOutputStream()); BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Entre com o seu nome: "); String wbsUsuario = teclado.readLine(); saida.println(wbsUsuario); Thread t = new wbsClienteSocket(wbsConexao); t.start(); String linha; while (true) { System.out.print("> "); linha = teclado.readLine(); // antes de enviar, verifica se a conexão não foi fechada if (done) {break;} // envia para o servidor saida.println(linha); } } catch (IOException e) { // Caso ocorra alguma excessão de E/S, mostre qual foi. System.out.println("IOException: " + e); } }  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.