【问题标题】:nodejs and socketio -Cannot send messagesnodejs 和 socketio - 无法发送消息
【发布时间】:2013-12-12 21:25:34
【问题描述】:

我想创建一个类似聊天的应用程序,因此开始使用 nodejs 和 socket.io。为简单起见(首先,我想了解它是如何工作的),我制作了一个按钮来向服务器发送消息,这反过来应该(在我的新手理解中)更改当前指向的所有网页的段落内容网址。我的问题是,我发出消息的网页内容发生了变化,但指向相同 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(客户端)文件(仅相关部分):

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost');

  socket.on('to_all_users', function (data) {
      var msgs=document.getElementById("my_messages");
      msgs.innerHTML=data;  
      });

  function send_to_server(){
      socket.emit("user_event","Here is the new news");
  }
</script>

</head>
<body>
<button onclick="send_to_server()">CHECKBUTTON</button>
<p id="my_messages">Here is the messages</p>

What I did: 我在我的 google-chrome 上打开了两个 localhost:8080 并单击了其中一个的检查按钮。

What I expected:在两个选项卡(本地主机:8080)中带有 id=my_messages 的段落更改为数据-“发生了变化”

What actually happened: 我单击按钮的段落更改为所需的字符串。证明消息到达了服务器,并且是服务器发出的响应触发了页面中的事件以更改段落。但是另一个(本地主机:8080)什么也没发生。

我错过了什么?我从根本上是在思考错误的方向吗?

【问题讨论】:

    标签: javascript node.js socket.io


    【解决方案1】:

    更改 server.js 中的 1 行

    // 来自

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

    //到

    io.sockets.emit("to_all_users", "something has changed");
    

    【讨论】:

    • 如果您也可以添加一些关于每个人的作用以及应该用于特定目的的内容,这对我和其他人都会有所帮助。
    • 哦,帮帮我,杰克,我英语不好,在这里记录socket.io/#how-to-use
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    相关资源
    最近更新 更多