Socket.io звонит http://undefined/.... в URL - PullRequest
3 голосов
/ 08 июля 2011

Я начинаю с socket.io с простого примера:

Клиентская сторона:

    $(document).ready(function () {      
    var sock = new io.Socket();      
    sock.on('message', function (data) {        
        var obj = JSON.parse(data);        
        if(obj.message) {          
            $('#message').text(obj.message);        
        } else {          
            $('#timestamp').text(obj.timestamp);          
            $('#clients').text(obj.clients);        }      });      

    sock.connect('http://127.0.0.1:8333');      
    $("#poke").click(function() { 
        sock.send("Poke !"); 
    });     
});

Сторона сервера:

var io = require('socket.io');var express = require('express');
var app = express.createServer();
app.configure(function(){  
    app.use(express.static(__dirname + '/public'));});
    app.get('/', function(req, res, next){  res.render('./public/index.html');});
app.listen(8333);

var socket = io.listen(app, {  
    flashPolicyServer: false,  
    transports: ['websocket', 'flashsocket', 'htmlfile', 'xhr-multipart', 'xhr-polling', 'jsonp-polling']});
var allClients = 0;
var clientId = 1;
socket.on('connection', function(client) {  var my_timer;  var my_client = { "id": clientId, "obj": client };
  clientId += 1;
  allClients += 1;
  my_timer = setInterval(function () {    
    my_client.obj.send(JSON.stringify({ "timestamp": (new Date()).getTime(), "clients": allClients }));  }, 1000);  
    client.on('message', function(data) {    my_client.obj.broadcast(JSON.stringify({ message: "poke send by client "+my_client.id }));    
    console.log(data);  
 });

client.on('disconnect', function() {    
    clearTimeout(my_timer);    
    allClients -= 1;    
    console.log('disconnect');  });});

Моя проблема в том, что клиент пытается получить:

http://undefined/socket.io/1/?t=1310142283769&jsonp=0

Который не определен. Когда я скручиваю свое приложение с http://localhost/socket.io/1/?t=1310142283769&jsonp=1, я получаю что-то

Почему сокет вызывает undefined, тогда как все выглядит правильно.

Спасибо, если поможете мне!

Ответы [ 2 ]

13 голосов
/ 11 июля 2011

Похоже, вы неправильно создаете сокет в своем клиенте.У вас должно быть что-то вроде:

var sock = io.connect('http://127.0.0.1:8333');

и полностью удалите строку sock.connect.

Вы должны просмотреть примеры на сайте SocketIO.http://socket.io/#how-to-use

3 голосов
/ 26 июля 2011

Я только что столкнулся с тем же. Для меня это был код, написанный для Socket.IO v0.6, вызвавший проблему - с тех пор, как я в последний раз работал с Socket.IO, он обновился до v0.7! Руководство по миграции доступно здесь:

https://github.com/LearnBoost/Socket.IO/wiki/Migrating-0.6-to-0.7+

...