## 第十步:Socke.IO – 實時用戶數
本節我們將聚焦在服務器端的Socket.IO。
打開server.js并找到下面的代碼:
~~~
app.listen(app.get('port'), function() {
console.log('Express server listening on port ' + app.get('port'));
});
~~~
用下面的代碼替換上面的:
~~~
/**
* Socket.io stuff.
*/
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var onlineUsers = 0;
io.sockets.on('connection', function(socket) {
onlineUsers++;
io.sockets.emit('onlineUsers', { onlineUsers: onlineUsers });
socket.on('disconnect', function() {
onlineUsers--;
io.sockets.emit('onlineUsers', { onlineUsers: onlineUsers });
});
});
server.listen(app.get('port'), function() {
console.log('Express server listening on port ' + app.get('port'));
});
~~~
概括的來說,當發起一個WebSocket連接,它增加`onlineUsers`數量(一個全局變量)并發布一個廣播——“嘿,我現在有這么多在線訪問者啦!”當某人關閉瀏覽器離開,`onlineUsers`數量減少并再次發布廣播“嘿,有人剛剛離開了,我現在有這么多在線訪問者了。”
> 注意:如果你從來沒用過Socket.IO,那么這個[聊天室應用](http://socket.io/get-started/chat/)教程非常適合你。
打開views目錄下的index.html并添加下面的代碼到其它script標簽下面:
~~~
<script src="/socket.io/socket.io.js"></script>
~~~

刷新瀏覽器,然后在不同的標簽頁打開[http://localhost:3000](http://localhost:3000/)以模擬不同的用戶連接。現在你應該能在logo的圓點上看到訪問者總數了。

到目前為止,我們既沒有完成前端,也沒有能用的API端點。我們可以在教程前半部分專注在前端,然后在后半部分專注于后端,或者反過來。但就我個人來說,我從來沒像這樣構建過任何App。在開發過程中,我一般在前端和后端之間切換著來做。
- 前言
- 概述
- 第一步:新建Express項目
- 第二步:構建系統
- 第三步:項目結構
- 第四步: ES6速成教程
- 第五步: React速成教程
- 第六步:Flux架構速成教程
- 第七步:React路由(客戶端)
- 第八步:React路由(服務端)
- 第九步:Footer和Navbar組件
- 第十步:Socke.IO – 實時用戶數
- 第十一步:添加Character的組件
- 第十二步:數據庫模式
- 第十三步:Express API 路由(1/2)
- 第十五步:Home組件
- 第十四步:Express API 路由(2/2)
- 第十六步:角色(資料)組件
- 第十七步:Top 100 組件
- 第十八步:Stats組件
- 第十九步:部署
- 第二十步: 附加資源
- 總結