iT邦幫忙

DAY 5
2

複製、貼上,接K屎 - 以nodeJS 為例系列 第 5

複製、貼上、玩node - socket.io 解說

  • 分享至 

  • xImage
  •  

socket.io 程式解說,解說到底socket.io 什麼東西,怎麼使用socket.io
socket.io 名稱上雖然有socket,實際上卻跟『通訊協定』的socket 有著莫大的落差,主要是整合了websocket,xhr long-polling,iframe polling等技術,讓不支援websocket 的瀏覽器也能夠體驗websocket 的感受。

socket.io 是基於node.js 的產物,它也是最適合用來編寫comet 的解決方案之一,畢竟socket.io 已經整合了前後端資料,node 後端會利用heartbeat, handsharking 的方式持續瞭解瀏覽器端是否持續連線著,同時server 端有新的response 會快速回饋於瀏覽器上。

接著看看socket.io 如何運作:

server 端程式解說,

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

socket.io 需要監聽http server 的狀態。

接著給予觸發及監聽event ,

	io.sockets.on('connection', function (socket) {  
	socket.emit('news', { hello: 'world' });  
	socket.on('my other event', function (data) {  
	console.log(data);  
	});  
	});

在這邊server 端有幾個設定,

  1. 監聽connection, my other event
  2. 觸發news, 同時response 一個json資料

client 端程式解說,

	<script src="/socket.io/socket.io.js"></script>   

瀏覽器端的程式,直接就編寫於index.html ,首先引入js 檔案,當然如果有檔案有自行維護可以自訂路徑。

<script>
var socket = io.connect('http://localhost');
</script>

宣告要監聽的ip 位置,在這邊預設就是localhost (本機端)。

socket.on('news', function (data) {  
     console.log(data);  
     socket.emit('my other event', { my: 'data' });  
   });  

最後直接設定socket 要做的事情,

  1. 監聽 news
  2. 觸發 my other event

對照server, client 端的程式,可以發現一邊監聽,一邊觸發,同時事件名稱也可以讓使用者自行定義,發展彈性十足,同時也保留了websocket 方法,因此喜歡使用websocket 的人,也可以採用send, on response 的方式監聽、觸發事件。對於程式開發者來說,已經解決掉大部分node 自行編寫comet 所會遇到的問題,讓開發者


上一篇
複製、貼上、玩node - socket.io 安裝
下一篇
複製、貼上、玩node - forever 安裝
系列文
複製、貼上,接K屎 - 以nodeJS 為例6
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言