初始化将要发送的节点文件中的客户端套接字



我从nodejs服务器向客户端发送信息,如下所示:

app.get([...]
let index = await readFileAsync(path.join(__dirname, 'file.js'), 'utf8');
res.send(index);
)

我想在我的文件.js.中初始化一个套接字

在socket-io文档中,您可以执行以下操作:

<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
</script>

因此,我尝试将socket.io.js直接复制/粘贴到我的file.js中,并在最后添加var socket = io();,但我在客户端上遇到了这个错误:GET http://127.0.0.1:5500/socket.io/?EIO=4&transport=polling&t=NXz6N1S 404 (Not Found)

有一种方法可以在文件.js中初始化我的客户端套接字吗?

编辑:

我的server.js文件:

const app = require('express')();
const http = require('http').Server(app);
const io = require('socket.io')(http);
var path = require('path');
const axios = require('axios');
const fs = require('fs');
var util = require('util');
[...]
io.on('connection', (socket) => {
console.log('a user connected');
});
[...]
app.get('/test', async (req, res) => {
let index = await readFileAsync(path.join(__dirname, 'file.js'), 'utf8');
res.send(index);
});
const port = process.env.PORT || 8000;
http.listen(port, () => {
console.log(`ok = ${port}`);
});

它很管用!您已经成功地将socket.io.js移动到您自己的JS文件中,并告诉它在最后进行连接。

但是,连接尝试失败,因为socket.io后端使用的路径上没有任何侦听。最可能的原因是您缺少了将socket.io与后端HTTP服务器集成的代码部分:

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

如果没有这一点,socket.io就无法建立连接,因为服务器不接受客户端的请求。启用服务器端处理,整个事情就应该开始工作了。

但是,请注意,从长远来看,这很可能不是一个好主意——socket.io文档建议的标准方法是使用服务器默认在GET /socket.io/socket.io.js下公开的捆绑socket.io.js文件,因为这是确保代码版本兼容的最简单方法。如果您只是将socket.io-client的源代码复制到自己的文件中,然后在某个时间(几个月(有人决定更新服务器端Socket.io版本,则应用程序可能会因为客户端未更新而中断。

最新更新