Node.js Socket.io+;Express|io.on(';连接';…)未激发

Node.js Socket.io+;Express|io.on(';连接';…)未激发,node.js,sockets,express,socket.io,Node.js,Sockets,Express,Socket.io,我有一个小Express服务器,想启动一些socket.io连接 以下是我在服务器端的内容: var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); app.all('*', function(req, res, next) { res.header("Content-Type", "text/plain");

我有一个小Express服务器,想启动一些socket.io连接

以下是我在服务器端的内容:

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

app.all('*', function(req, res, next) {
    res.header("Content-Type", "text/plain");
    res.header("Access-Control-Allow-Origin", "*");
    next();
});

app.get('/run', function(req, res, next){
    io.on('connection', function (socket) {
       socket.on('client_data', function (data) {
          console.log('Message: '+data.message);
       });
    });
});
server.listen(8002, function() {
    console.log('Listening on port %d', server.address().port);
});
以下是我在客户端的内容:

<script src="http://host:8002/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect("http://host:8002");
  socket.emit('client_data', {'message': 'hello there!'});
</script>

变量套接字=io.connect(“http://host:8002");
emit('client_data',{'message':'hello here!'});
现在,当我转到我的浏览器并键入时,它将跳入我的“app.get('/run'..)”——服务器上我的app.js中的一部分……但不幸的是,它不会执行io.on('connection'..){}——部分,因此,我不会在控制台中从客户端发送输出。关于这个问题的一些想法或解决方案


编辑:好的,这一定与我的io.on('connection')正在使用app.get('/run')-部分运行有关。因为如果我把io.on('connection')-部分放在server.listen()-部分中,它就会工作。有人知道它为什么不在内部工作吗?

尝试放置这些更新并给我结果集:var http=require('http');var io=require('socket.io')(http);app.use而不是app.all,最后在客户端var socket=io.connect();加载资源失败:在上述更改之前,服务器以404(未找到)的状态响应,此部分工作:)对于index.html或套接字连接???我询问哪个资源请求以404响应。