Heim > Artikel > Web-Frontend > Eine kurze Analyse der ordnungsgemäßen Verwendung des Socket.IO-Moduls im Knoten
Wie verwende ich das Socket.IO-Modul in
node? Der folgende Artikel stellt Ihnen vor, wie Sie das Socket.IO-Modul elegant in node.js verwenden. Ich hoffe, er wird Ihnen hilfreich sein!
Socket.IO ist eine WebSocket-Bibliothek
, einschließlich clientseitiger js
und serverseitiger node .js
, dessen Ziel es ist, Echtzeitanwendungen zu erstellen, die auf verschiedenen Browsern und Mobilgeräten verwendet werden können. [Verwandte Tutorial-Empfehlungen: WebSocket库
,包括了客户端的js
和服务器端的node.js
,它的目标是构建可以在不同浏览器和移动设备上使用的实时应用。【相关教程推荐:nodejs视频教程】
Socket.IO将WebSocket、AJAX和其它的通信方式
全部封装成了统一的通信接口
,也就是说,我们在使用SocketIO时,不用担心兼容问题,底层会自动选用最佳的通信方式
。
socket.io封装了服务端和客户端,使用起来非常简单方便。
socket.io支持跨平台,这就意味着你有了更多的选择,可以在自己喜欢的平台下开发实时应用。
socket.io可以自定义事件发送到对端,对端可以是服务器,可以是客户端;使用emit发送,接收还是on
。
它会自动根据浏览器从WebSocket、AJAX长轮询、Iframe流等等各种方式中选择最佳的方式来实现网络实时应用,非常方便和人性化,而且支持的浏览器最低达IE5.5。如果不支持websocket,可以自动降级为轮询
打开终端,在终端中输入以下代码即可安装Socket.IO模块:
npm i socket.io
emit
和 on
是最重要的两个api,分别对应 发送
和 监听
事件.
我们可以非常自由的在服务端
定义并发送一个事件emit
,然后在客户端
监听 on
,反过来也一样。
发送的内容格式
也非常自由,既可以是基本数据类型 Number,String,Boolean 等,也可以是 Object,Array 类型,甚至还可以是函数
。而用回调函数的方式则可以进行更便携的交互。
socket.emit(eventName[, ...args])
:发射(触发)一个事件
socket.emit('aaa','你好,前台')
在这里以
服务端
为例子:在服务端中通过socket.emit()
方法创立一个事件(第一个参数:自定义事件
)aaa
,发送的信息(第二个参数
)你好,前台
.
注意: 第二个参数可以传
对象
,因为在emit方法内部
带有JSON.stringfy()
方法,自动将对象转化为字符串。
socket.on(eventName, callback)
:监听一个 emit 发射的事件
socket.on('aaa',(msg)=>{ console.log(msg) })
在这里以
客户端
为例,客户端监听服务端的事件aaa
,随后通过回调函数的方式打印出aaa
传过来的信息。
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 kapseltsocket.io.js
文件,因为socket.io不是浏览器内置模块,需要单独引用,js文件内部代码 ==> socket.io.js内部代码,将这里的代码复制到自己创建的js文件中,然后在客户端中引用。
只要在客户端中出现const socket = io()
nodejs-Video-TutorialWebSocket, AJAX und andere Kommunikationsmethoden
in eineeinheitliche Kommunikationsschnittstelle
, das heißt, wenn wir Wenn wir SocketIO verwenden,müssen wir uns keine Gedanken über Kompatibilitätsprobleme machen, die unterste Ebene wählt automatisch die beste Kommunikationsmethode aus
. 🎜
🎜🎜🎜Vorteile von Socket.IO🎜🎜
- 🎜socket.io kapselt den Server und die Der Client ist sehr einfach und bequem zu bedienen. 🎜
- 🎜socket.io unterstützt plattformübergreifend, was bedeutet, dass Sie mehr Möglichkeiten haben, Echtzeitanwendungen auf Ihrer bevorzugten Plattform zu entwickeln. 🎜
- 🎜socket.io kann Ereignisse so anpassen, dass sie an den Peer gesendet werden, der ein Server oder ein Client sein kann;
verwenden Sie emit zum Senden, Empfangen oder Einschalten
. 🎜- 🎜Es wählt automatisch die beste Methode zur Implementierung von Echtzeit-Netzwerkanwendungen basierend auf dem Browser von WebSocket, AJAX Long Polling, Iframe-Streaming usw. aus. Es ist sehr praktisch und benutzerfreundlich und unterstützt Der erforderliche Mindestbrowser ist IE5.5. Wenn WebSocket nicht unterstützt wird, kann es automatisch auf
Polling
heruntergestuft werden Geben Sie im Terminal den folgenden Code ein, um das Socket.IO-Modul zu installieren:🎜rrreee
🎜🎜🎜Verwenden Sie Socket.IO im Knoten🎜🎜🎜emit code> und on
sind die beiden wichtigsten APIs, die den Ereignissensending
bzw.listen
entsprechen. 🎜🎜Wir können bei serverDefinieren undsenden Sie ein Ereignis, das ausgegeben wird
, und hören Sie dannan
auf demClient
und umgekehrt. 🎜🎜Das gesendeteInhaltsformat
ist ebenfalls sehr frei.kann grundlegende Datentypen wie Zahl, Zeichenfolge, Boolescher Wert usw. oder ein Objekt, ein Array-Typ oder sogar eine Funktion sein
. Die Verwendung von Rückruffunktionen ermöglicht eine tragbarere Interaktion. 🎜🎜🎜🎜emit🎜🎜🎜socket.emit(eventName[, ...args]):<code>Emit (trigger) an event
🎜rrreee🎜Hier nehmen wirserver
als Beispiel: Übergeben Sie im Serversocket.emit( )
-Methode erstellt ein Ereignis (Erster Parameter: benutzerdefiniertes Ereignis
)aaa
, sendet Informationen (Zweiter Parameter
)Hallo, Rezeption
.🎜🎜🎜Hinweis: 🎜 Der zweite Parameter kann als🎜🎜🎜on🎜🎜🎜object
übergeben werden, da innerhalb deremit method
Mit demJSON.stringfy()
-Methode verwendet, konvertiert sie Objekte automatisch in Strings. 🎜socket.on(eventName, callback) span> code>: <code>Ereignisse abhören, die von einem emit ausgegeben werden
🎜rrreee🎜Hier nehmen wirclient
als Beispiel. Der Client lauscht auf Ereignisse auf dem Serveraaa
und geben Sie dann die vonaaa
über die Rückruffunktion übergebenen Informationen aus. 🎜
🎜🎜🎜Eingeführt und verwendet in Express🎜🎜🎜🎜Server🎜
rrreee🎜Übergeben Sieserver
als Parameter, um anzuzeigen, dass der vonio
bereitgestellte Dienst immer noch verfügbar ist basierend aufhttp
.
Der Code hier zeigt an, dass die Verbindungserfolgsmeldung gedruckt wird, solange die Verbindung erfolgreich ist! 🎜
🎜🎜Client🎜
rrreee🎜Aufsocket.io.js
muss separat verwiesen werden der Client-Code>-Datei, da socket.io kein integriertes Modul des Browsers ist und separat referenziert werden muss, der interne Code der js-Datei ==> socket.io. js interner Code 🎜, kopieren Sie den Code hier in die von Ihnen erstellte js-Datei und verweisen Sie dann im Client darauf.
Solangeconst socket = io()
im Client angezeigt wird, stellt der Browser standardmäßig eine direkte Verbindung zur lokalen Dienstadresse her, die vom Client gestartet wird. 🎜
Zusammenfassung
socket.io Dieses Drittanbietermodul ist relativ bequemer und effizienter beim Schreiben von Code im
ws
模块中通过switch
分支来进行对不同的聊天类型
进行不同的方法呈现,而在socket.io
模块中仅仅通过自定义事件
就可以解决这个问题,并且socket.io可以在服务器断开后,当你再次进入客户端后可以自动连接,整体的表现优于ws
-Modul.Weitere Informationen zu Knoten finden Sie unter: nodejs-Tutorial!
Das obige ist der detaillierte Inhalt vonEine kurze Analyse der ordnungsgemäßen Verwendung des Socket.IO-Moduls im Knoten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!