2012-03-30 122 views
39

我對node.js和它的插件比較新,所以這可能是一個初學者問題。使用Socket.io連接客戶端到服務器

我試圖讓一個簡單的網頁服務器上的HTML頁面連接到另一臺運行node.js與websocket.io的服務器。

我的代碼如下所示:

客戶

<script src="socket.io/socket.io.js"></script> 
<script> 
    // Create SocketIO instance, connect 

    var socket = new io.Socket(); 

    socket.connect('http://127.0.0.1:8080'); 

    // Add a connect listener 
    socket.on('connect',function() { 
     console.log('Client has connected to the server!'); 
    }); 
    // Add a connect listener 
    socket.on('message',function(data) { 
     console.log('Received a message from the server!',data); 
    }); 
    // Add a disconnect listener 
    socket.on('disconnect',function() { 
     console.log('The client has disconnected!'); 
    }); 

    // Sends a message to the server via sockets 
    function sendMessageToServer(message) { 
     socket.send(message); 
    }; 
</script> 

Serverside集團

// Require HTTP module (to start server) and Socket.IO 
var http = require('http'); 
var io = require('socket.io'); 
var port = 8080; 

// Start the server at port 8080 
var server = http.createServer(function(req, res){ 
    // Send HTML headers and message 
    res.writeHead(200,{ 'Content-Type': 'text/html' }); 
    res.end('<h1>Hello Socket Lover!</h1>'); 
}); 

server.listen(port); 

// Create a Socket.IO instance, passing it our server 
var socket = io.listen(server); 

// Add a connect listener 
socket.on('connection', function(client){ 
    console.log('Connection to client established'); 

    // Success! Now listen to messages to be received 
    client.on('message',function(event){ 
     console.log('Received message from client!',event); 
    }); 

    client.on('disconnect',function(){ 
     clearInterval(interval); 
     console.log('Server has disconnected'); 
    }); 
}); 

console.log('Server running at http://127.0.0.1:' + port + '/'); 

啓動服務器工作正常,運行在瀏覽器中也適用http://localhost:8080,返回如預期的那樣,'Hello Socket Lover'。但是我想讓一個不同的頁面與套接字交談,而不是從node.js運行一個。

但是當我運行它,沒有任何反應和Chrome控制檯回報:

Failed to load resource   http://undefined/socket.io/1/?t=1333119551736 
Failed to load resource   http://undefined/socket.io/1/?t=1333119551735 

我一直在這個整天。任何幫助?

回答

34

您是否嘗試過從相對URL加載socket.io腳本?

您使用:

<script src="socket.io/socket.io.js"></script> 

和:

socket.connect('http://127.0.0.1:8080'); 

你應該嘗試:

<script src="http://localhost:8080/socket.io/socket.io.js"></script> 

和:

socket.connect('http://localhost:8080'); 

使用任何適合您當前設置的開關localhost:8080

另外,根據您的設置,當從不同域(同源策略)加載客戶端頁面時,可能會有一些問題與服務器通信。這可以通過不同的方式來克服(在這個答案的範圍之外,google/SO)。

10

你需要確保你添加斜線你的鏈接之前socket.io:

<script src="/socket.io/socket.io.js"></script> 
在視圖/控制器

然後就去做:

var socket = io.connect() 

這應該解決您的問題。

+9

var socket = io()' – 2015-07-09 19:52:46

相關問題