Client side receive polling on socket.io

泪湿孤枕 提交于 2019-12-13 06:38:24

问题


I have the following code on my server

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
    });
  });

  
});

But instead of showing "update_count_message" in the console, the console logs a continuous stream of polls.

	
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

how can I solve this? I do not want to receive a loop in the browser.


回答1:


The browser/socket is not connecting to NodeJS. NodeJS is either not running, or you are attempting to connect to the wrong port - in your case it looks like it is trying to connect to port 80. If you already have Apache running on port 80, you can't run both NodeJS and Apache on the same port unless you setup a reverse proxy in your httpd.conf.

You can follow the debug instructions here to see what more descriptive errors SocketIO might have for you:

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

You could also go to this URL in the browser and see what page it is trying to connect to:

http://localhost/socket.io/



来源:https://stackoverflow.com/questions/33990574/client-side-receive-polling-on-socket-io

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!