Javascript Socket.IO 404在本地工作,但在通过Netlify部署时不工作

Javascript Socket.IO 404在本地工作,但在通过Netlify部署时不工作,javascript,node.js,express,socket.io,Javascript,Node.js,Express,Socket.io,Socket.IO在本地工作,但在通过Netlify部署时不工作 请原谅我的代码,我是node.js等的新手 这是我得到的错误: 加载资源失败:服务器响应状态为404()(socket.io,第0行) 客户: <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.dev.js"></script> function syncObj() { var socket = io

Socket.IO在本地工作,但在通过Netlify部署时不工作 请原谅我的代码,我是node.js等的新手

这是我得到的错误: 加载资源失败:服务器响应状态为404()(socket.io,第0行)

客户:

<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.dev.js"></script>
function syncObj() { 
var socket = io.connect() 
socket.emit('sync', `${objId}`)}
// Listen for events
function syncComplete() {
var socket = io.connect()
socket.on('sync', function (data) {
objId = data
noti5()
document.getElementById("note4").style.display = "none";
document.getElementById("note6").style.display = "none";
// What do do when sync is complete
// Say Something
// Refresh Screen
})
}

//Server:
const express = require('express');
const opn = require('opn');
const app = express();
const port = 5000
var socket = require('socket.io')
const cors = require("cors")

function allowCrossDomain(req, res, next) {
res.header('Access-Control-Allow-Origin', '*')
res.header('Access-Control-Allow-Methods', 'PUT, POST, PATCH,   DELETE, OPTIONS');
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With,   Content-Type, Accept");
next()}
app.use(allowCrossDomain)
app.use(cors())
app.use('/', express.static(__dirname + '/public'))

var server = app.listen(port, function () {
console.log('listening to request on port 5000');
opn(`http://localhost:${port}`);
});

// Socket Setup
var io = socket(server);
io.on('connection', function (socket) {
console.log('made socket connection', socket.id)

socket.on("sync", function(data){
io.sockets.emit('sync', data)
})
})

函数syncObj(){
var socket=io.connect()
emit('sync',`${objId}')}
//倾听事件
函数syncComplete(){
var socket=io.connect()
socket.on('sync',函数(数据){
objId=数据
noti5()
document.getElementById(“note4”).style.display=“无”;
document.getElementById(“note6”).style.display=“无”;
//同步完成后,您要做什么
//说点什么
//刷新屏幕
})
}
//服务器:
const express=require('express');
const opn=require('opn');
常量app=express();
常数端口=5000
var socket=require('socket.io')
const cors=要求(“cors”)
函数allowCrossDomain(req、res、next){
res.header('Access-Control-Allow-Origin','*'))
res.header('Access-Control-Allow-Methods'、'PUT、POST、PATCH、DELETE、OPTIONS');
res.header(“访问控制允许头”、“来源、X请求、内容类型、接受”);
next()}
应用程序使用(allowCrossDomain)
app.use(cors())
app.use('/',express.static(uu dirname+'/public'))
var server=app.listen(端口,函数(){
log('在端口5000上侦听请求');
骨桥蛋白(`http://localhost:${port}`);
});
//套接字设置
var io=套接字(服务器);
io.on('连接',函数(套接字){
console.log('makesocketconnection',socket.id)
socket.on(“同步”,函数(数据){
io.sockets.emit('sync',data)
})
})

在当地工作得很好。请帮助。

您应该在
io.connect(url在此)

试试这个:

var socket = io('/');
如果我们用“/”代替url,如果它是本地主机或托管在其他ip上,它将自动获取url。您也可以像这样在这里提到您的完整url

var socket = io('http://localhost:port')
//or something else
以下是一个例子:

服务器:

const express = require('express');
const app = express();
const socket = require('socket.io');
const port = process.env.PORT || 8080;
//starting the server
const server = app.listen(port,() => {console.log("server running")});

//connecting socket to the server
const io = socket(server);
io.set('transports', ['websocket']);

io.on('connection',socket =>{
// your code here
}
客户:

var socket = io('/',{transports: ['websocket'],upgrade:false});

//on connection 
socket.on('connect',data =>{
//logic here
}

嗯,你能分享代码吗?@Mikkel抱歉,刚刚添加。你的客户托管在哪里?