Клиент socket.io 'emit' показывает странную ошибку в консоли Chrome - PullRequest
1 голос
/ 15 ноября 2011

Я разрабатываю простое приложение, используя текущие последние версии nodejs + socket.io для Windows.Я столкнулся с проблемой, когда сокет создается на стороне клиента, но socket.emit приводит к следующему выводу в консоли (с использованием Google Chrome):

GET http://0.0.34.184:8888/socket.io/1/?t=1321385855665&jsonp=0

, что довольно странно, потому что я тестируюна локальном хосте: 8888, поэтому должно быть не менее 127.0.0.1, а не 0.0.34.184.Клиент socket.io на странице запрашивается с сервера в теге следующим образом:

<script type="text/javascript" src="socket.io/socket.io.js"></script>

Затем я подключаюсь с использованием следующего кода:

socket = io.connect('localhost:8888');
socket.on("my_event", receiveNetEvent);

console.log('LOG: sio init complete, socket=' + socket);

В журнале говорится, что сокет= [Объект объекта], который не является нулевым или неопределенным, поэтому все должно работать.

Отправка осуществляется в следующей функции:

function sendRequest(request){
    socket.emit('request', request);
}

Объект запроса, переданный функции:формируется и передается так:

var initRequest = {};
initRequest.subject = 'weather';
initRequest.key = 'initial';

sendRequest(initRequest);

И это действительный объект json, опять же, по console.log().

Все это делает меня совершенно не осведомленным о любой возможной причине происходящего.

Ответы [ 3 ]

2 голосов
/ 02 марта 2012

Попробуйте добавить http: // к пути подключения. Это решило эту ошибку для меня.

socket = io.connect('http://localhost:8888');
1 голос
/ 24 сентября 2012

Я также столкнулся с той же проблемой, но решил ее, принудив только xhr-опрос к javascript на стороне сервера, и это сработало.

    var io = require('socket.io').listen(8000);
    io.configure(function () {
      io.set('transports', ['xhr-polling']);
    });
<..Rest code..>
1 голос
/ 30 июня 2012

Я столкнулся с той же проблемой, но у меня была другая причина. Моя установка работала с клиентом сокетов на сервере Tomcat с портом 9000 и подключалась к localhost: 80 выполняющихся nodejs, но я не знал, что порт был обязательным, даже если он был по умолчанию 80.

ТАК я дал порт и заменил

io.connect ('http://localhost') с io.connect (' http://localhost:80')

Поскольку оба моих сервера указывали на один и тот же домен, который в данном случае localhost ... socket io по какой-то причине брал порт 9000

Надеюсь, это кому-нибудь поможет.

...