当前位置: 首页 > 后端技术 > Node.js

[NodeWeb通信Socket.IO]

时间:2023-04-03 13:55:21 Node.js

环境:Nodev8.2.1;Npmv5.3.0;OSWindows10在web开发中,我们使用HTTP协议,它是一种基于文本的“单向”通信机制。当我们要从服务器获取数据时,Ajax当然是首选。Ajax无疑是动态网页的一大发展方向。它不再需要我们即使更新一点内容也要刷新整个页面,但是当我们在服务端向客户端推送数据时,Ajax就显得力不从心了。如果我们使用Socket构建双向机制,那么服务端向客户端推送数据就很容易了。一、Socket.IO简介Socket.IO是Node.js的一个模块。它提供了一种通过WebSocket进行通信的简单方法。WebSocket协议非常复杂,但是Socket.IO同时提供了服务端和客户端组件,所以只需要一个模块就可以为应用程序添加WebSocket支持。它还支持不同的浏览器。[API手册]2.一些示例2.1基本应用server.jsconsthttp=require("http"),io=require("socket.io");constserver=http.createServer((req,res)=>{res.end();}).listen(3000);//交给Socket.io接管constsocket=io.listen(server);//当客户端socket连接时socket.on("connection",client=>{console.log("webconnected");})上面代码中,当客户端连接时,服务端会同时触发两个事件:server.onRequest和Socket.onConnection。它们之间有什么区别?不同之处在于Socket是持久的。index.html上面的代码,我们先执行server.js,然后在浏览器访问index.html时,控制台会打印“webconnected”2.2向客户端推送数据server.jsconsthttp=require("http"),io=require("socket.io");constserver=http.createServer((req,res)=>{res.end();}).listen(3000);constsocket=io.listen(server);socket.on("connection",client=>{client.send("welcome")})上面的服务器代码会在客户端socket连接后推送一个“welcome”给客户端连接成功。index.html2.3广播消息上面是针对单个客户端的消息推送,当我们有一个客户端连接时,如果我们要向所有连接的客户端发送消息时,它是一条广播消息。Socket.IO提供了一个API,可以很方便地广播server.jsconsthttp=require("http"),io=require("socket.io");constserver=http.createServer((req,res)=>{res.end();}).listen(3000);constsocket=io.listen(server);socket.on("connection",client=>{//广播消息client.broadcast.send("新用户上线");})【注意!!】这里的广播消息不会广播自己2.4多Socket连接上面的例子中每个页面只有一个Socket连接,这里是多Socket连接的例子server.jsconsthttp=require("http"),io=require("socket.io");constserver=http.createServer((req,res)=>{res.end();}).listen(3000);constsocket=io.listen(server);//对于一个特定的套接字连接socket.of("/hello").on("connection",client=>{client.send("hello")})socket.of("/msg").on("connection",client=>{client.send("msg")})index.html上面代码中,在一个页面中建立了两个WebSocket连接END