在当今互联网时代,Web 应用程序的实时通讯功能日益普及。而 Socket.io 是一种用于实现实时通讯的 JavaScript 库。本文主要介绍如何在 Hapi 应用程序中使用 Socket.io 进行实时聊天,并附有完整的示例代码,以供读者学习参考。
准备工作
在开始之前,需要先确保安装好 Node.js 和 Hapi 应用程序。同时,在 Hapi 应用程序中,需要安装 Socket.io 库。可以使用以下命令进行安装:
npm install --save socket.io
创建 Socket.io 服务器
首先,需要创建一个 Socket.io 服务器并将其与 Hapi 服务器进行链接。可以使用以下代码创建 Socket.io 服务器:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- -------- - --------------------- ----- ------ - --- ------------- ----- ----- ----- ----------- --- ----- -- - -------------------------- ---------------展开代码
通过调用 socket.io 函数并将 server.listener
作为参数传入,可以创建一个 Socket.io 服务器,并将其链接到 Hapi 服务器上。在 server.start()
中启动服务器。
监听事件
接下来,需要监听用户进入和离开聊天室的事件。当用户进入聊天室时,需要将其昵称存储到服务器中,并向其他用户发送提示消息;当用户离开聊天室时,需要将其从服务器中删除,并向其他用户发送提示消息。
可以使用以下代码监听 connection
事件:
io.on('connection', (socket) => { console.log('a user connected'); });
当用户进入聊天室时,Socket.io 会自动触发 connection
事件。可以在这里获取用户的昵称并将其存储到服务器中。可以使用以下代码实现:
-- -------------------- ---- ------- ----- ----- - --- ------------------- -------- -- - -------------- ---- ------------ --------------- ------- ---------- -- - -------------------- - - --------- -- ----------- ---------------- - --------- -- ------ ------------- -------- ---------- --- ----------------------- -- -- - -------------- ---- --------------- -- ------------- ----- -------- - ----------------- ------ ----------------- -- ------ ------------- ------ ---------- --- ---展开代码
在 user login
事件中,获取用户昵称并将其存储到 users
对象中,且使用 io.emit
广播提示消息给所有用户。在 disconnect
事件中,获取用户昵称并从 users
对象中删除,且同样使用 io.emit
广播提示消息给所有用户。
发送消息
最后,需要实现用户之间的消息发送功能。可以使用以下代码实现:
-- -------------------- ---- ------- ------------------- -------- -- - -------------- ---- ------------ --------------- ------- ---------- -- - -------------------- - - --------- -- ----------- ---------------- - --------- -- ------ ------------- -------- ---------- --- ----------------------- -- -- - -------------- ---- --------------- -- ------------- ----- -------- - ----------------- ------ ----------------- -- ------ ------------- ------ ---------- --- --------------- --------- ----- -- - ---------------------------- - -- - - ----- -- --------- ------------- --------- - ----- ----------------- -------- --- --- --- ---展开代码
使用 socket.on
监听 chat message
事件,并在事件回调函数中广播用户发送的消息给所有用户。
至此,一个简单的实时聊天室已经完成了。完整代码如下:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- -------- - --------------------- ----- ------ - --- ------------- ----- ----- ----- ----------- --- ----- -- - -------------------------- ----- ----- - --- ------------------- -------- -- - -------------- ---- ------------ --------------- ------- ---------- -- - -------------------- - - --------- -- ----------- ---------------- - --------- -- ------ ------------- -------- ---------- --- ----------------------- -- -- - -------------- ---- --------------- -- ------------- ----- -------- - ----------------- ------ ----------------- -- ------ ------------- ------ ---------- --- --------------- --------- ----- -- - ---------------------------- - -- - - ----- -- --------- ------------- --------- - ----- ----------------- -------- --- --- --- --- ---------------展开代码
希望这篇文章能够对读者理解 Socket.io 的使用以及在 Hapi 应用程序中实现实时通讯有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67bad9fa306f20b3a69f36d2