Javascript 初始化将要发送的节点文件中的客户端套接字
我从nodejs服务器向客户端发送信息,如下所示:Javascript 初始化将要发送的节点文件中的客户端套接字,javascript,node.js,web,websocket,socket.io,Javascript,Node.js,Web,Websocket,Socket.io,我从nodejs服务器向客户端发送信息,如下所示: app.get([…] 让index=wait readFileAsync(path.join(uu dirname,'file.js'),'utf8'); res.send(索引); ) 我想在file.js中初始化一个套接字 在socket io文档中,您可以执行以下操作: var socket=io(); 因此,我尝试直接在我的文件.js中复制/粘贴socket.io.js,并添加var socket=io()在最后,但是我在我的客
app.get([…]
让index=wait readFileAsync(path.join(uu dirname,'file.js'),'utf8');
res.send(索引);
)
我想在file.js中初始化一个套接字
在socket io文档中,您可以执行以下操作:
var socket=io();
因此,我尝试直接在我的文件.js
中复制/粘贴socket.io.js
,并添加var socket=io()代码>在最后,但是我在我的客户机上遇到了这个错误:GEThttp://127.0.0.1:5500/socket.io/?EIO=4&transport=polling&t=NXz6N1S 404(未找到)
有没有一种方法可以在file.js中初始化我的客户端套接字
编辑:
my 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后端使用的路径上没有任何内容正在侦听。最可能的原因是你错过了:
const io=require('socket.io')(http);
否则,socket.io将无法建立连接,因为服务器不接受客户端的请求。启用服务器端处理,整个过程应该开始工作
但是,请注意,从长远来看,这很可能不是一个好主意-socket.io文档建议的标准方法是使用服务器默认情况下在GET/socket.io/socket.io.js
下公开的捆绑socket.io.js
文件,因为这是确保代码版本兼容的最简单方法。如果您只是将socket.io client
的源代码复制到您自己的文件中,然后在某个时间(几个月)有人决定更新服务器端socket.io版本,则应用程序可能会中断,因为客户端未更新。我的服务器中已经有以下行:const http=require('http').createServer(app);const io=require('socket.io')(http)代码>@SamuelRodriguez-Lozano,后端是吗?不,我的服务器运行在8000端口!5500端口是用于my index.html客户端测试的vscode服务器,它在内部调用
it@SamuelRodriguez-Lozano:好了,您需要将客户端指向服务器;它不知道自己应该使用:8000。即使从:8000加载脚本,socket.io也不知道从何处加载脚本,因为它在浏览器窗口的全局上下文中执行。请参阅:-在此处指定后端。