Node.js Express集成Socket.IO实现WebSocket通信

作者:墨池时间:2026-10-22 09:48:16浏览:240

本文介绍如何在Node.js Express框架中集成Socket.IO模块以实现WebSocket通信。内容涵盖模块安装、app.js配置、端口监听设置及服务端与客户端代码示例,包括全局广播与单页面通信的具体实现方式。

Express集成Socket.IO配置步骤

本文介绍在Node.js环境中,基于Express框架集成Socket.IO模块以实现WebSocket通信的具体方法。

该方案经过资料查阅与实际测试验证,确认可行运行。

首先,需通过npm安装socket.io依赖模块。


npm install socket.io --save

然后打开express的app.js将模块引入,在12行左右的


var app = express();

在app.js文件约第12行代码处,添加初始化服务器实例的代码。


var server = require('http').Server(app);
var io = require('socket.io')(server);

随后,在约第20行位置添加中间件配置,将socket.io实例挂载到请求对象上。


app.use(function(req, res, next){
 res.io = io;
 next();
});

为避免从www目录启动应用,在app.js底部倒数第二行之前添加额外的配置代码。


var port = 3000;
app.set('port', port);
server.listen(port);

配置完成后,应用将开始监听3000端口。

至此,服务端准备工作已完成,接下来进行示例演示。

服务端与客户端通信示例

可使用官方提供的示例代码,直接写入app.js中进行测试。


io.on('connection', function (socket) {
 socket.emit('news', { hello: 'world1' });
 socket.on('my other event', function (data) {
  console.log(data);
 });
});

服务端配置完毕后,需在客户端页面引入socket.io客户端脚本文件。


<script src='javascripts/socket.io-1.4.5.js'></script>
var socket = io.connect("//localhost:3000");
socket.on('news', function (data) {
  console.log(data);
  alert(data);
  socket.emit('my other event', { my: 'data' });
});

打开浏览器页面即可测试连接状态。

单页面通信实现

若需实现仅在当前页面接收服务端发送的消息,可采用特定路由下的连接监听方式。


router.get('/', function(req, res, next) {
  //只有当前页面可以获得
  res.io.on('connection', function(socket) {
    socket.emit('news', {
      hello: 'world'
    });
    socket.on('my other event', function(data) {
      console.log(data);
    });
  });
  //所有页面都可以获得
  var io = require("../app").io;
  io.emit("news",{hello:"myworld"});
  res.render("pclogin.ejs", {});
});

希望上述内容对Node.js程序开发有所帮助。

作者最新文章