socket.io Обновление всех открытых страниц - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь создать чат-сайт, что-то вроде клона раздора. Я использую socket.io для соединения своего внешнего интерфейса и внутреннего интерфейса, но я не могу понять, как сделать так, чтобы, когда кто-то вводит сообщение, это сообщение отображалось на всех открытых в настоящее время страницах браузера

Server.js (файл моего сервера, который я использую):

        const express = require("express");
    const app = express();

    const http = require("http").Server(app);
     const port = 4000;

      const io = require("socket.io")(http);


          app.get("/", (req, res) => {
             res.sendFile("ChatRoom.html", {"root": __dirname});

          });

           io.on("connection", (socket) => {
           console.log("A user has connected");
        socket.on("messageSend", (data) =>{
          console.log(data);

         io.emit("chatUpdate", data);
          });

         });



      http.listen(port, () => {
             console.log("Server.js listening on port " + port );
         });

И мой код Javascript в файле HTML: var socket = io (); document.addEventListener ('keydown', InputText);

            function InputText(e)
         {

  //Checks if the pressed button is Enter and if the input box is empty
  if( e.keyCode == 13 && document.getElementById("chat_input").value != "")
      {


    //Gets the div which the message will be ridden to
  var parent = document.getElementById("chat");
  //Current date to be used when displaying the exact time of sending the 
     messgae
  let d = new Date()//.getTimezoneOffset();

  //Getting the properties of the input
  var value = document.getElementById("chat_input");

  //Telling the server that a message has been sent - function
  emitter(parent, value.value, d);

  //Setting the text box back to blank
  value.value = "";

  }
 }
//Function
    function emitter(holder, text, date){

  socket.emit("messageSend", text);

  socket.once("chatUpdate", (message) => {
    var z = document.createElement("p");
    z.innerText = date.getHours() +":"+ date.getMinutes() + " | " + 
        message;
    z.style = 'border-top: 1px solid Black;border-bottom: 1px solid 
           Black;font-size:20px; margin: 0;padding: 10px;';

    holder.appendChild(z);

   });
   }

1 Ответ

0 голосов
/ 14 января 2019

После того, как вы отправили сообщение, вам необходимо прослушать его в клиенте, если действие, которое вы пытаетесь выполнить, - это отправка сообщения другому пользователю, у которого в данный момент открыт сокет. Поскольку вы отправляете его пользователю, а не серверу, вам необходимо подключиться к сокету, поэтому вполне возможно, что ваш сокет может быть определен более точно так:

var socket = io.connect('Your:/url/of/windowlocation/whileonsocket/here')

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...