2011-06-26 10 views
3

NodeJSとsocket.ioで手を差し伸べて問題が発生しました。私は、NodeJSとSocket.ioをローカルホストにインストールして実行しています。Socket.ioサーバーが発射しない

server.js

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

// 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>NodeJS Server Online</h1>'); 
}); 
server.listen(8080); 

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

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

    socket.emit("server ready"); 

    socket.on('test', function (msg) { 
     socket.broadcast.emit('TEST:', msg); 
     console.log(msg); 
    }); 

    socket.on('user message', function (msg) { 
     socket.broadcast.emit('user message', msg); 
     console.log(msg); 
    }); 

}); 

client.js

$(document).ready(function() { 
// Stuff to do as soon as the DOM is ready; 
    var socket = io.connect('http://localhost',{port:8080}); 

    socket.on('server ready',function() { 
     messages.append("<li>Server Ready...</li>"); 
     console.log("Server Ready"); 
    }); 

    // Add a connect listener 
    socket.on('connect',function() { 
     messages.append("<li>Connected...</li>"); 
     console.log("connected"); 
     socket.emit('test',"Just testing"); 
    }); 

}); 

Serverは罰金開始しますが、私の問題は、server.jsがないことである。現時点では私は次のセットアップを持っていますsocket.emit( "server ready")を起動しないでください。行。クライアント側のコードは、この行私のサーバーの出力をテストするにterminal.appのように正常に動作します:

websocket received data packet 5:::{"name":"test","args":["Just testing"]} 

私は何をしないのですか?なぜサーバー側のコンポーネントが起動しないのですか?

答えて

4

socket.ioを0.7.2に更新し、expressを使用するようにサンプルを少し変更しました。以下のコードは「サーバー準備完了」イベントを受け取ることができました。

ノードサーバー:

var http = require('http'), 
    express = require('express'); 

var app = module.exports = express.createServer(); 

// Configuration 

app.configure(function(){ 
    app.use(express.static(__dirname + '/public')); 
}); 

app.listen(9000); 
console.log("server started"); 

// socket.io 
var io = require('socket.io').listen(app); 

io.sockets.on('connection', function(socket){ 
    socket.emit('server ready', {msg: 'hi'}) ; 
}); 

Webページ(/sock.html):なぜ急行

<html> 
<body> 
<script type="text/javascript" src="/socket.io/socket.io.js"></script> 
<script> 
var socket = io.connect(); 
socket.on('server ready', function(data){ console.log('server ready!'); }) ; 
</script> 
</body> 
</html> 
+0

?多くのプロジェクトでは、私は1つのhtmlファイルを提供する必要があり、expressはそのような場合にはあまりにも多くの場合です。 – Purefan

+0

おそらく、そこにあるすべてのsocket.ioチュートリアルが、 – Bobby

関連する問題