Node.js,express和socket.io:socket.on没有收到从服务器到客户端的消息socket.emit

时间:2015-10-31 02:23:24

标签: node.js express socket.io

此功能在我的应用中无效。 我无法从服务器向客户端(socket.on)收到消息(socket.emit)。 但我不会在逆向(客户端到服务器)中遇到此问题。

我使用cloud9,他们的聊天示例运行正常。 这是我的服务器代码:

stack.yaml

和html页面的代码:

var http = require('http');
var path = require('path');
var async = require('async');
var socketio = require('socket.io');
var express = require('express');

var router = express();
var server = http.createServer(router);
var io = socketio.listen(server);
router.use(express.static(path.resolve(__dirname, 'client2')));


io.on('connection', function (socket) {

  socket.emit('hello', 'i changed');  // !!!

});


server.listen(process.env.PORT || 3000, process.env.IP || "0.0.0.0", function(){
  var addr = server.address();
  console.log("Chat server listening at", addr.address + ":" + addr.port);
});

没有变化...... 编辑:使用console.log。 但是消息似乎是通过套接字发送的:

<html>
  <head>
    <title>test</title>

 <script src="/socket.io/socket.io.js"></script>
  <script>

  var socket = io.connect();

  socket.on('hello', function (msg) {     // !!!
        document.innerHTML = msg;
   });


    </script>
  </head>
  <body>

  <p>normal page</p>

   </body>
</html>
你能帮帮我吗?

4 个答案:

答案 0 :(得分:0)

您需要更改

var socket = io.connect();

通过

var socket = io.connect('http://0.0.0.0:8080');

答案 1 :(得分:0)

var socket = io.connect()&lt; - 这应指定您要连接的域。

答案 2 :(得分:0)

    $(function(){
  var socket = io();
  socket.on('hello',function(data){
    $('#lblmsg').text(data.message);
  });
});

这是我正在使用的东西。在我的代码的第4行中,传递了数据并检索了data.message。但您在html页面上直接将msg与innerhtml等效(在您注释了\ !!!的代码段中)

看看您是否还在努力!

答案 3 :(得分:-1)

所以我在这方面做了很多,试图让它发挥作用,它确实没有,但我不像你那样工作,我是初学者,与你的编码方式不兼容,但我是我发现问题是io正在使用的端口

var io = socketio.listen(server);

或html获取连接的地方

<script src="/socket.io/socket.io.js"></script>

对我而言,html正在请求其自己的ds中的js文件,但它不应该。

当我使用socket.io时,我把它放在服务器

var client = require("socket.io").listen(8080).sockets

主要部分是listen,它在端口8080上侦听,在我的html中侦听

var socket = io.connect("http://127.0.0.1:8080");

哪有效,对此我很抱歉,我很肯定这不是一个答案,但我已经尝试过,我希望你能完成它,即使一年零三个月已经完成过去了。