2011-10-16 66 views
1

我正在MAMP服務器上開發一個使用CodeIgniter的應用程序(用於開發,活它會在LAMP上)。我正在嘗試爲聊天服務器添加socket.io的實時功能,但我遇到了一些問題。我有socket.io和MAMP獨立運行,但我無法讓我的客戶端與我的服務器通話。無法連接並獲取「未處理的socket.io url」錯誤與MAMP + Socket.io(node.js)

server.js:

// Get the Socket.io module 
var io = require('socket.io'); 

console.log ('Chat Server started'); 

// Create a Socket.IO instance, listen on 8084 
var socket = io.listen(8084); 

// Add a connect listener 
socket.on('connection', function(client){ 

    console.log ("Server Connected"); 

}); 

我的客戶端腳本(該socket.io.js加載罰款和我的控制檯說 「調試:提供靜態內容」 每當我加載頁面):

<script src="http://localhost:8084/socket.io/socket.io.js"></script> 
<script type="text/javascript"> 
    // Create SocketIO instance, connect 
    var socket = new io.Socket('localhost',{ 
     port: 8084 
    }); 
    socket.connect(); 

    socket.on ('connect', function() { console.log ('Client connected'); }); 
</script> 

開始Node.js的文件後,我得到這個在我的控制檯:

Chat Server started 
info - socket.io started 

加載客戶端後(我的指揮瀏覽器http://localhost:8888 - 爲甲基苯丙胺的默認端口),我沒有得到任何控制檯消息,而是這種源源不斷(約每秒):

info - unhandled socket.io url 

它看起來像它不連接在所有。另外,在我的JS錯誤控制檯在瀏覽器中沒有錯誤。有任何想法嗎?

+0

我會先嚐試一下,看看是否有任何異常被拋出。 – Louis

+0

'try {socket.connect()} catch(err){alert(err); }' 沒有提示。 –

+0

您包含端口3478的JavaScript,在端口8084上監聽Socket.IO,並在8888上提供內容。其中一個錯誤?我覺得新版本的Socket.IO不需要'new io.Socket'的配置選項 - 它根據JS的包含方式來計算它。 –

回答

4

運行socket.io版本0.8.5,我終於得到這個工作使用下面的代碼:

server.js

var sys = require('sys'), 
    express = require('express'), 
    app   = express.createServer('localhost'), 
    io   = require('socket.io'); 

app.use(express.static(__dirname + '/public')); 

app.get('/', function (req, res) { 
    res.send('Hello World'); 
}); 

app.listen(3000); 

var server = io.listen(app); 

server.sockets.on('connection', function (client){ 
    // new client is here! 
    client.send ('Now connected!'); 

    client.on('message', function() { 

    }) ; 

    client.on('disconnect', function() { 

    }); 

}); 

客戶端腳本:

<script src="http://localhost:3000/socket.io/socket.io.js"></script> 
<script src="/assets/js/jquery-1.6.4.min.js"></script> 
<script type="text/javascript"> 

    $(document).ready(function(){ 

     var socket = io.connect('http://localhost:3000'), 
     text = $('#text'); 

     socket.on('connect', function() { 
      text.html('connected'); 
      socket.on('message', function (msg) { 
       text.html(msg); 
      }); 
     }); 

     socket.on('disconnect', function() { 
      text.html('disconnected'); 
     }); 

    }); 

</script> 

用了一切並運行,當我進入我的頁面時,我看到「現在連接!」幾乎立即。我也通過MAMP上的CodeIgniter爲我的頁面提供服務 - 一切正常!

+1

+1,關注您的解決方案,非常感謝! –