Node.js 并不能做所有事情,但它可通過 Socket.IO 庫輕松實(shí)現(xiàn) WebSockets。使用 WebSockets
可輕松構(gòu)建實(shí)時(shí)多用戶的應(yīng)用程序或游戲,今天我們將講述如何使用 Node.js 和 Socket.IO 構(gòu)建簡單的聊天程序。
注意: 在閱讀文章之前你應(yīng)該先安裝好 Node.js,同時(shí)你需要一個(gè)自己喜歡的文本編輯器,本文提及的一些源碼有些改自
http://book.mixu.net/ch13.html
下面我們開始入門教程:
首先在你的電腦上創(chuàng)建一個(gè)新目錄,姑且命名為 chat,然后在該目錄創(chuàng)建兩個(gè)文件,分別是 app.js 和 index.html。
app.js 文件內(nèi)容如下:
var fs = require('fs')
, http = require('http')
, socketio =
require('socket.io');
var server = http.createServer(function(req, res)
{
res.writeHead(200, { 'Content-type': 'text/html'});
res.end(fs.readFileSync(__dirname + '/index.html'));
}).listen(8080,
function() {
console.log('Listening at:
http://localhost:8080');
});
socketio.listen(server).on('connection',
function (socket) {
socket.on('message', function (msg) {
console.log('Message Received: ', msg);
socket.broadcast.emit('message', msg);
});
});
上述代碼是一個(gè)超級簡單的聊天服務(wù)器的實(shí)現(xiàn),該服務(wù)器發(fā)送 index.html 并偵聽所有 WebSockets 請求,如果你發(fā)送一個(gè) hi
的聊天信息,格式如下:
{"name":"message","args":["hi"]}
index.html 頁面代碼如下:
<html>
<head>
<script
src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script>
$(function(){
var iosocket =
io.connect();
iosocket.on('connect', function ()
{
$('#incomingChatMessages').append($('<li>Connected</li>'));
iosocket.on('message', function(message) {
$('#incomingChatMessages').append($('<li></li>').text(message));
});
iosocket.on('disconnect', function()
{
$('#incomingChatMessages').append('<li>Disconnected</li>');
});
});
$('#outgoingChatMessage').keypress(function(event) {
if(event.which == 13) {
event.preventDefault();
iosocket.send($('#outgoingChatMessage').val());
$('#incomingChatMessages').append($('<li></li>').text($('#outgoingChatMessage').val()));
$('#outgoingChatMessage').val('');
}
});
});
</script>
</head>
<body>
Incoming
Chat: <ul id="incomingChatMessages"></ul>
<br
/>
<input type="text"
id="outgoingChatMessage">
</body>
</html>
該頁面雖然不怎么吸引人,但是可正常工作。接下來打開兩個(gè)瀏覽器,必須得是支持 WebSockets 的瀏覽器,例如 Chrome 或者
Safari。
下一步就是安裝 Socket.IO 了,可在命令行窗口中執(zhí)行如下命令:
$ npm install socket.io
然后運(yùn)行 app.js 文件:
$ node app.js
現(xiàn)在你可以打開兩個(gè)瀏覽器,訪問 http://localhost:8080/ 地址開始互聊了。
英文原文:http://www.giantflyingsaucer.com/blog/?p=3751