首頁  >  文章  >  web前端  >  淺析node中如何優雅使用Socket.IO模組

淺析node中如何優雅使用Socket.IO模組

青灯夜游
青灯夜游轉載
2022-11-22 19:53:141453瀏覽

node中如何使用Socket.IO模組?以下這篇文章就來跟大家介紹一下在node.js中優雅使用Socket.IO模組的方法,希望對大家有幫助!

淺析node中如何優雅使用Socket.IO模組

Socket.IO的定義

Socket.IO是一個WebSocket函式庫,包括了客戶端的js伺服器端的node.js,它的目標是建立可以在不同瀏覽器和行動裝置上使用的即時應用。 【相關教學推薦:nodejs視訊教學

Socket.IO將WebSocket、AJAX及其它的通訊方式全部封裝了統一的通訊接口,也就是說,我們在使用SocketIO時,不用擔心相容問題,底層會自動選用最佳的通訊方式


Socket.IO的優點

  • socket.io封裝了服務端和客戶端,使用起來非常簡單方便。

  • socket.io支援跨平台,這意味著你有了更多的選擇,可以在自己喜歡的平台下開發即時應用。

  • socket.io可以自訂事件傳送到對端,對端可以是伺服器,可以是客戶端;使用emit傳送,接收還是on

  • 它會自動根據瀏覽器從WebSocket、AJAX長輪詢、Iframe串流等等各種方式中選擇最佳的方式來實現網路即時應用,非常方便且人性化,而且支援的瀏覽器最低達IE5.5。如果不支援websocket,可以自動降級為輪詢

#node中安裝Socket.IO


#開啟終端,在終端機中輸入以下程式碼即可安裝Socket.IO模組:

npm i socket.io

#node中使用Socket.IO

emit

on 是最重要的兩個api,分別對應發送監聽 事件.

我們可以非常自由的在服務端定義並發送一個事件emit,然後在

客戶端
監聽

on,反過來也一樣。 發送的內容格式也非常自由,既可以是基本資料型別Number,String,Boolean 等,也可以是Object,Array 類型,甚至還可以是函數。而用回呼函數的方式則可以進行更便攜的互動。

emit

#socket.emit(eventName[, ...args])發射(觸發)一個事件

socket.emit('aaa','你好,前台')
在這裡以服務端
為範例:在服務端中透過

socket.emit() 方法創立一個事件(第一個參數:自訂事件)aaa,發送的訊息(第二個參數

)

你好,前台.

注意:

第二個參數可以傳物件,因為在emit方法內部帶有JSON.stringfy()方法,自動將物件轉換為字串。


on

#socket.on(eventName, callback):監聽一個emit 發射的事件
socket.on('aaa',(msg)=>{
	console.log(msg)
})

在這裡以

客戶端為例,客戶端監聽服務端的事件aaa,隨後透過回呼函數的方式印出aaa傳過來的訊息。


在express中引入使用

##服務端

const server = require('http').createServer(app);
const io = require('socket.io')(server);
io.on('connection', socket => {
	console.log('恭喜你连接成功!')
	socket.on("message",(msg)=>{
		console.log(msg)  //你好 后台
		//注意 : 这里的 io.emit() 是默认转发给全部客户端信息,所有客户端都可以收到
		io.emit("allMsg","广播 : 欢迎来到聊天室")
	})
});
server.listen(3000);

server當作參數傳入,目的在於說明

io###掛載的服務依舊是基於###http ###的。 ### 這裡的程式碼表示,只要連接成功,就會列印連接成功的訊息! #####################客戶端######
<script src="/socket.io/socket.io.js"></script>
<script>
  const socket = io();  //默认连接服务端启动的本地端口地址
  socket.emit("message","你好 后台")
  // 监听服务端的广播事件,接收广播的消息
  socket.on("allMsg",(msg)=>{
		console.log(msg)  //广播 : 欢迎来到聊天室
  })
</script>
######在客戶端需要單獨引用###socket.io.js ###文件,因為socket.io不是瀏覽器內建模組,需要單獨引用,js檔案內部程式碼==> ###socket.io.js內部程式碼###,將這裡的程式碼複製到自己建立的js檔案中,然後在客戶端中引用。 ### 只要在客戶端中出現###const socket = io()###,瀏覽器將會直接預設連線到客戶端啟動的本機服務位址。 ###

Summary

Relatively speaking, the third-party module socket.io is more convenient and efficient when writing code. The ws module uses the switch branch to present different chat types in different ways, and in the socket.io module This problem can be solved just by custom events, and socket.io can automatically connect after the server is disconnected when you enter the client again, and the overall performance is better than wsmodule.

For more node-related knowledge, please visit: nodejs tutorial!

以上是淺析node中如何優雅使用Socket.IO模組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除