2011-07-08 37 views
3

我開始與socket.io用一個簡單的爲例:Socket.io調用的http://未定義/ ....在URL

客戶端:

$(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,而一切似乎設置正確。

謝謝,如果你能幫助我!

回答

13

它看起來像你不正確地在你的客戶端創建套接字。你應該有更類似的東西:

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

並完全刪除sock.connect行。

您應該查看SocketIO網站上的示例。 http://socket.io/#how-to-use

+0

非常感謝你。我幾次閱讀socket.io網站而沒有看到我的錯誤! – Servernumber

+0

(我一定很蠢) – Servernumber

3

我剛剛遇到同樣的事情。對我而言,這是針對Socket.IO v0.6編寫的代碼導致的問題 - 自從我上次使用Socket.IO以來,它已更新至v0.7!有可在這裏遷移指南:

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

+0

謝謝!我現在要試試 – Servernumber

+1

上面的鏈接是不正確的。嘗試在最後添加+:https://github.com/LearnBoost/Socket.IO/wiki/Migrating-0.6-to-0.7+ –