Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript nodejs和socketio-无法发送消息_Javascript_Node.js_Socket.io - Fatal编程技术网

Javascript nodejs和socketio-无法发送消息

Javascript nodejs和socketio-无法发送消息,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我想创建一个类似聊天的应用程序,所以开始使用nodejs和socket.io。为了简单起见(首先,我想了解它是如何工作的),我制作了一个按钮,向服务器发送消息,这反过来应该(在我的新手理解中)更改当前指向该URL的所有网页的段落内容。我的问题是,我发出消息的网页的内容发生了变化,但指向同一URL的其他网页的同一段落没有发生任何变化 这是我的密码: // This is server.js var app = require('http').createServer(handler) ,

我想创建一个类似聊天的应用程序,所以开始使用nodejs和socket.io。为了简单起见(首先,我想了解它是如何工作的),我制作了一个按钮,向服务器发送消息,这反过来应该(在我的新手理解中)更改当前指向该URL的所有网页的段落内容。我的问题是,我发出消息的网页的内容发生了变化,但指向同一URL的其他网页的同一段落没有发生任何变化

这是我的密码:

// This is server.js


var app = require('http').createServer(handler)
  , io = require('socket.io').listen(app)
  , fs = require('fs');

app.listen(8080);

function handler (req, res) {
  fs.readFile(__dirname + '/index.html',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }

    res.writeHead(200);
    res.end(data);
  });
}

io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
  socket.on('user_event', function (data) {
        socket.emit("to_all_users","something has changed");
        console.log(data);
      });
});
以下是我的HTML(客户端)文件(仅适用于相关部分):


var socket=io.connect('http://localhost');
socket.on('to_all_user')函数(数据){
var msgs=document.getElementById(“我的消息”);
msgs.innerHTML=数据;
});
函数send_to_server(){
emit(“user_事件”,“这里是最新消息”);
}
检查按钮

以下是消息

我做了什么:
我在谷歌浏览器上打开了两个localhost:8080,然后点击其中一个的复选按钮

我期望的内容
:两个选项卡(localhost:8080)中id=my_消息的段落都更改为数据-“某些内容已更改”

实际发生的情况:
我单击按钮的段落更改为所需字符串。它证明了消息发送到服务器,并且是服务器发出的响应触发了页面中的事件以更改段落。但是另一个没有发生任何事情(localhost:8080)


我错过了什么?我的想法根本上是错误的吗?

在server.js中更改1行

//从

socket.emit("to_all_users","something has changed");
//到


如果你能补充一点关于每个人都做什么以及应该用于特定目的的内容,这将对我和其他人都有帮助。噢,帮帮我,杰克,我的英语不好,记录在这里
socket.emit("to_all_users","something has changed");
io.sockets.emit("to_all_users", "something has changed");