如果已我所學不多的情況下要製作一個簡單的聊天室,我大概能想到的方法就是將這些對話內容存入MySql,然後背後透過Ajax一直去撈取資料庫的內容然後一直更新畫面上的對話內容,這樣想想就覺得好麻煩…
最近看到Socket.io這簡直真是好用,下面是一個簡單的聊天室程式碼。
Server端
Server.js1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| var http = require('http'), fs = require('fs'), server, io;
server = http.createServer(function(req, res){ fs.readFile(__dirname + '/index.html', function(err, data){ res.writeHead(200, {'Content-Type': 'text/html'}); res.end(data); }); });
server.listen(8080); io = require('socket.io').listen(server);
io.sockets.on('connection', function(socket){
socket.on('send_chat', function(data){ io.sockets.emit('update_chat_content', data); });
});
|
Client端
index.html1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="http://current.bootstrapcdn.com/bootstrap-v204/css/bootstrap-combined.min.css" type="text/css" /> <script src='/socket.io/socket.io.js'></script> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> <script> var socket = io.connect('http://localhost:8080'); socket.on('update_chat_content', function(data){
$('#chat_content').append('<div>' + data + '</div>'); }); $(function(){ $("#send").on('click', function(){
var message = $("#send_input").val(); $("#send_input").val('');
socket.emit('send_chat', message); }); }); </script> </head> <body>
<div class="row-fluid" style="text-align: center"> <div class="span12" id="chat_content"></div> <div class="input-append"> <input class="span2" id="send_input" size="16" type="text"><button class="btn" type="button" id="send">Send!</button> </div> </div>
</body> </html>
|
其實只要觀察一下socket.emit
與socket.on
裡面監聽的名稱就可以看出Server端與Client的執行時間順序了;最後執行node Server.js
就可以看到一個簡單的聊天室。