客户端在 socket.io 上接收轮询

Client side receive polling on socket.io

我的服务器上有以下代码

var socket  = require( 'socket.io' );
var express = require('express');
var app     = express();
var server  = require('http').createServer(app);
var io      = socket.listen( server );
var port    = process.env.PORT || 3000;

server.listen(port, function () {
  console.log('Server listening at port %d', port);
});


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

  socket.on( 'new_count_message', function( data ) {
    io.sockets.emit( 'new_count_message', { 
     new_count_message: data.new_count_message

    });
  });

  socket.on( 'update_count_message', function( data ) {
    io.sockets.emit( 'update_count_message', {
     update_count_message: data.update_count_message 
    });
  });

  socket.on( 'new_message', function( data ) {
    io.sockets.emit( 'new_message', {
     name: data.name,
     email: data.email,
     subject: data.subject,
     created_at: data.created_at,
     id: data.id
    });
  });

  
});

但控制台并未显示 "update_count_message",而是记录了连续的轮询流。

 
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850081140-15
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850080247-12
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850080252-13
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850081252-16
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850081290-17
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850081351-18
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850081416-19
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850081474-20
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850081532-21
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850081576-22
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850081651-23

我该如何解决这个问题? 我不想在浏览器中收到循环。

browser/socket 没有连接到 NodeJS。 NodeJS 不是 运行ning,或者您正在尝试连接到错误的端口 - 在您的情况下,它看起来像是在尝试连接到端口 80。如果您已经在端口上安装了 Apache 运行ning 80,你不能 运行 NodeJS 和 Apache 都在同一个端口上,除非你在 httpd.conf.

中设置反向代理

您可以按照此处的调试说明查看 SocketIO 可能为您提供的更多描述性错误:

http://socket.io/docs/logging-and-debugging/

您也可以在浏览器中转到这个 URL 并查看它试图连接到哪个页面:

http://localhost/socket.io/