Socket.io 是一个基于事件的实时双向通信库,能够在 web 开发中帮助我们实现实时通信,它可被用于物联网的应用中。
Socket.io 的基本用法
在实时通信的基础设置前,我们要先准备好 Socket.io。我们可以使用 npm 安装 Socket.io:
npm install socket.io
当我们成功引入 Socket.io 后,要从服务端和客户端分两部分设置实时通信。在服务端,我们要创建一个服务器,监听客户端的连接,并使用 io.on('connection', callback)
监听客户端连接的事件:
const server = require('http').createServer(); const io = require('socket.io')(server); io.on('connection', function (socket) { console.log('client connected'); });
在客户端中,我们需要使用 io()
连接到服务器。
const socket = io('http://localhost:8080');
接下来,在客户端发起消息:
socket.emit('hello', 'world');
在服务端监听带有消息的事件:
io.on('connection', function (socket) { socket.on('hello', function (message) { console.log(message); // 'world' }); });
如此一来,我们就建立起了一对一的实时通信服务。
用 Socket.io 控制物联网设备
在实际开发中,我们经常需要通过 Socket.io 实现控制物联网设备。为了模拟物联网设备,这里我们配置了两个服务端。
-- -------------------- ---- ------- ----- ------- - ------------------------------- ----- --- - ------------------------------ -------------------- -------- -------- - ------------------- ------------ -------------------- -------- -- - ------------------------ --- --- ----- ------- - ------------------------------- ----- --- - ------------------------------ -------------------- -------- -------- - ------------------- ------------ -------------------- -------- -- - ------------------------ --- --- --------------------- ---------------------展开代码
我们在客户端可以控制硬件设备 SERVER1 和 SERVER2:
// 控制第一个物联网设备 const socket1 = io('http://localhost:8080'); socket1.emit('control'); // 控制第二个物联网设备 const socket2 = io('http://localhost:8081'); socket2.emit('control');
当我们控制这两个硬件设备时,它们将会在服务端打印出自己的相应信息,如 control1
或 control2
。
连接多个硬件设备
现在,我们尝试更进一步地使用 Socket.io 控制多个硬件设备。我们需要在服务器中创建多个 socket:
-- -------------------- ---- ------- ----- ------ - ------------------------------- ----- -- - ----------------------------- ----- ---------- - --- ------------------- -------- -------- - ------------------- ------------ ------------------------ ----------------------- -------- -- - ----- ----- - --------------------------- -- ------ --- --- - ------------------------ --- - --- ---展开代码
这样,我们就可以通过 Socket.io 控制多个连接到服务器的设备:
socketList.forEach(function (socket) { socket.emit('control'); });
接下来,我们可以编写逻辑代码对这些硬件设备进行控制,实现其相应的功能。
总之,通过 Socket.io 可以将控制不同硬件设备的操作进行统一管理。通过上述示例,我们可以更好地理解 Socket.io 的应用于物联网应用的意义。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d6abf6a941bf7134c74c4f