2012-03-30 123 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

相关问题