一、前言
socket.io 實(shí)現(xiàn)了實(shí)時(shí)雙向的基于事件的通訊機(jī)制,是基于 webSocket 的封裝,但它不僅僅包括 webSocket,還對(duì)輪詢(Polling)機(jī)制以及其它的實(shí)時(shí)通信方式封裝成了通用的接口,并且在服務(wù)端實(shí)現(xiàn)了這些實(shí)時(shí)機(jī)制的相應(yīng)代碼
socket.io 是跨平臺(tái)的,可以實(shí)現(xiàn)多平臺(tái)的即時(shí)通訊
由于 iOS 端進(jìn)行 socket 編程主要使用 GCDAsyncSocket 框架,但要實(shí)現(xiàn) Android、iOS、web 多平臺(tái)的通訊,還是選擇統(tǒng)一的框架或協(xié)議比較好。
基本 api,使用 socket.on 來監(jiān)聽傳過來的數(shù)據(jù),使用 socket.emit 來發(fā)送數(shù)據(jù)
二、本例說明
服務(wù)器端采用 Nodejs 開啟本地服務(wù),統(tǒng)一使用 socket.io 對(duì) iOS 端和 web 進(jìn)行即時(shí)通訊,簡單實(shí)現(xiàn)類似你猜我畫的數(shù)據(jù)傳輸
效果
三、服務(wù)器端
使用 express 進(jìn)行簡單的搭建,設(shè)置模板引擎及靜態(tài)服務(wù),新手會(huì)遇到一個(gè)坑,就是路徑的問題,一般使用 __dirname,來拼接絕對(duì)路徑
// 模板引擎app.set("views", path.join(__dirname, "/views/"));app.set("view engine", "ejs");// 靜態(tài)服務(wù)app.use(express.static(path.join(__dirname, "/public/")));app.use(&qu