Socket.IO 404 работает локально, но не при развертывании через Netlify - PullRequest
1 голос
/ 11 мая 2019

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

Работал отлично локально. Пожалуйста, помогите.

1 Ответ

0 голосов
/ 13 мая 2019

Вы должны указать свой URL в io.connect(url here)

попробуйте это:

var socket = io('/');

Если мы поместим '/' вместо URL-адреса, он автоматически получит URL-адрес, если он является локальным или размещен на другом IP-адресе. Здесь вы также можете указать свой полный 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...