当前位置: 首页 > 知识库问答 >
问题:

如何结合Express使用Socket.io?JS(使用快速应用程序生成器)

班凌
2023-03-14

我正在尝试使用Socket。io与Express结合。JS(使用Express应用程序生成器)
我找到了一些解决方法(在Express 4中使用socket.io和Express generator的/bin/www)
我的问题是我无法使用routes文件夹中的套接字。我可以在应用程序中使用它们。js和bin/www。js文件。当我调用路线索引时。js,它只是在很长一段时间内保持加载网页,而不会出现任何错误

bin/www.js

...
/**
 * Create HTTP server.
 */

var server = http.createServer(app);

var io     = app.io
io.attach( server );
...

应用程序.js

...
// Express
var app = express();

// Socket.io
var io = socket_io();
app.io = io;
var routes = require('./routes/index')(io);
...

路线/index.js

module.exports = function(io) {
    var app = require('express');
    var router = app.Router();

    io.on('connection', function(socket) {
        console.log('User connected');
    });

    return router;
}

共有2个答案

慕容成文
2023-03-14

对于任何仍然想使用套接字的人。io和expresshttp请求。最简单的方法是创建两个单独的http服务器实例,列出不同的端口。1个用于websockets,2个用于api请求。

const express = require("express");
const app = express();
const httpServer = require("http").createServer(app);
const io = require("socket.io")(httpServer, {
    path: '/'
});

// routes and io on connection

httpServer.listen(5000, () => {
   console.log("Websocket started at port ", 5000)
});

app.listen(3000, () =>{
   console.log("Http server listening at", 3000)
})
太叔涵亮
2023-03-14

以下是有关如何将 Socket.io 与 Express 配合使用的简单示例,我在此处在 GitHub 上提供了该示例:

  • https://github.com/rsp/node-websocket-vs-socket.io

后端代码如下:

var path = require('path');
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', (req, res) => {
  console.error('express connection');
  res.sendFile(path.join(__dirname, 'si.html'));
});
io.on('connection', s => {
  console.error('socket.io connection');
  for (var t = 0; t < 3; t++)
    setTimeout(() => s.emit('message', 'message from server'), 1000*t);
});
http.listen(3002, () => console.error('listening on http://localhost:3002/'));
console.error('socket.io example');

请参阅 https://github.com/rsp/node-websocket-vs-socket.io/blob/master/si.js

正如您在这里看到的,我正在创建快速应用程序:

var app = require('express')();

然后我使用该应用程序创建一个超文本传输协议服务器:

var http = require('http').Server(app);

最后,我使用http服务器创建Socket。io实例:

var io = require('socket.io')(http);

运行后:

http.listen(3002, () => console.error('listening on http://localhost:3002/'));

这一切都一起工作。

您可以在GitHub上看到整个示例,后端和前端代码都有效。它目前使用Express 4.14.0和套接字。io 1.4.8。

 类似资料:
  • 通过应用生成器工具 express-generator 可以快速创建一个应用的骨架。 你可以通过 npx (包含在 Node.js 8.2.0 及更高版本中)命令来运行 Express 应用程序生成器。 $ npx express-generator 对于较老的 Node 版本,请通过 npm 将 Express 应用程序生成器安装到全局环境中并执行即可。 $ npm install -g ex

  • 问题内容: 我在Socket.io中使用Express,但我不知道如何在Express路由中使用SocKet.io。 我最终在“ app.js”中这样做 我该如何定义到“ / cmp”的路由,并在其中传递var“ io”? 这样,在“ /routes/cmp.js”中,我可以执行以下操作: 一些线索? 问题答案: 高阶函数呢? 然后 作为另一种选择,有时我会将路线的格式设置为以下格式: 然后定义为

  • 我试图理解我们什么时候需要使用这个应用程序。在我们的node Express中使用 当我在网上搜索时,我在reddit上偶然发现了这个答案,它说明了应用程序之间的区别。获取和应用程序。使用 在此基础上,我总结了以下几点。 充当超级路由或中间件?这意味着它在? 此外,如果有人能添加更多关于app.use.的信息/练习,我将不胜感激

  • 问题内容: 我试图用https运行我的节点服务器。我正在使用express和socket.io。 这是我的https代码: 在我的客户上,其以下内容: 现在我在服务器上收到以下异常: uncaughtException:缺少PFX或证书+私钥。 编辑:现在我越来越 错误的请求 您的浏览器发送了该服务器无法理解的请求。原因:您正在对启用SSL的服务器端口使用纯HTTP。请改用HTTPS方案访问此UR

  • 我将express与socket.io一起使用,将express-session与Express-socket.io-session一起使用,这有助于将会话连接到我的套接字实例。 Deploy函数运行诸如会话、路由等内容。 POST http://localhost:8080/socket.io/?eio=3&transport=polling&t=lz9ey8p 404(未找到)

  • 问题内容: 我正在尝试使用node.js制作Samsung Smart TV应用程序。 在我的项目中,我想使我的应用程序与服务器PC通信。 根据许多网站,我可以使用“ jsonp”来做到这一点。 这是我发现的客户端代码。 而且,这是我发现的服务器端代码。 这些代码在我的PC(服务器PC)上正常工作,但是当我在其他计算机上打开客户端页面时,它不起作用。 控制台只给我这个日志: 我想使用jsonp处理