
[英]Socket.io cdn won't connect and returns a socket.io folder with socket.io.js script that returns an html file in console?
[英]socket.io.js:1407 GET http://localhost:3000/socket.io/?EIO=4&transport=polling&t=ONrJFW3 404 (Not Found)
我无法将我的客户端连接到我的服务器,我正在使用 socket.io v4 我的服务器 node.js 在端口 3000 上运行,套接字在我的项目运行的端口 80 上运行,我尝试添加传输,我阅读了文档但不知道发生了什么,也许你的配置错误,但我找不到解决方案
服务器端
var express = require('express');
const { Server } = require("socket.io")
const http = require('http');
const Sockets = require('./sockets');
//const socketsIO = require('./socket.io');
var app = express();
const miserver = http.createServer(app);
app.use(express.static(__dirname + '/public'));
const httpserver = miserver.listen(3000);
console.log("Servidor corriendo en el puerto 3000");
//incluir socket IO
const el_io = new Server(httpserver, {
cors: {
origin: "http://localhost:80",
methods: ['POST', 'GET'],
credentials: true
}
});
Sockets(el_io);
客户端
<script src="../socket.io.js"></script>
<script>
//conectar con el servidor Node.js
//var socketIO = io("http://localhost:80", {
// transports: ['websocket', 'polling', 'flashsocket'],
//});
var socketIO = io('ws://localhost:3000/socket.io/?EIO=3&transport=websocket');
function markAsRead() {
//evitar que el formulario se envie
event.preventDefault();
//obtener el nodo del formulario
var form = event.target;
//crear objeto AJAX
var ajax = new XMLHttpRequest();
//seleccionar el metodo y la URL of request
ajax.open("POST", "leer-notificacion.php", true);
//cuando el status de la peticion cambie
ajax.onreadystatechange = function() {
//cuando la respuesta es recibida desde el servidor
if (this.readyState == 4 && this.status == 200) {
var data = JSON.parse(this.responseText);
}
if (data.status == "success") {
//se remueve el boton 'read'
form.remove();
socketIO.emit("notificationRead", form.user_id.value);
}
}
//crear un objeto con la data del formulario
var formData = new FormData(form);
// mandar peticion AJAX con la data del formulario
ajax.send(formData);
}
</script>
我希望连接到服务器,因为需要更新我的前端
socket 在 80 端口运行
您显示的这段代码中没有任何内容在端口 80 上运行。您显示了在端口 3000 上运行的一个 http 服务器的创建。
另外,这个:
io('ws://localhost:3000/socket.io/?EIO=3&transport=websocket');
是错的。 路径和参数是 socket.io 添加到 URL 本身的东西。 你应该这样做:
const socketIO = io('http://localhost:3000');
而且,如果你想避免 CORs 问题,你可以像这样将 socket.io 到 go 直接告诉 webSocket:
const socketIO = io('http://localhost:3000', {transports: ['websocket']});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.