【问题标题】:Socket.IO 404 works locally but not when deployed via NetlifySocket.IO 404 在本地工作,但在通过 Netlify 部署时不起作用
【发布时间】:2019-09-28 20:08:50
【问题描述】:

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)
})
})

在本地完美运行。请帮忙。

【问题讨论】:

  • 嗯,可以分享一下代码吗?
  • @Mikkel 抱歉,刚刚添加。
  • 您的客户托管在哪里?

标签: javascript node.js express socket.io


【解决方案1】:

您应该在io.connect(url here) 中提及您的网址

试试这个:

var socket = io('/');

如果我们使用 '/' 而不是 url,如果它是 localhost 或托管在其他 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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-22
    • 2023-02-09
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多