我有一个在 apache 服务器中工作的前端 angularJS 应用程序(客户端),它的 API 调用被发送到在 NodeJS 中运行的后端应用程序(服务器)。现在我想在客户端和服务器之间建立一个套接字连接。 我正在使用 cors npm 模块来解决跨域问题,但它不起作用。
我已经看到了几种与此相关的解决方案,但没有一个对我有用。
这是我的服务器端代码:
var cors = require('cors')
var app = express();
var http = require('http');
app.use(cors({
origin: true,
credentials: true
}));
var server = http.createServer(app);
var io = require('socket.io')(server);
io.on('connection', function(socket)
{
console.log(":::::::::::::::::::::SOCKET:::::::::::::::::::::")
socket.on('message', function(data) {
console.log(data); })
});
服务器工作于 http://localhost:8000/
这是我的客户端代码:
function socket() {
var socket = io.connect('http://localhost:8000/');
return {
on: function(eventName, callback) {
socket.on(eventName, callback);
},
emit: function(eventName, data) {
socket.emit(eventName, data);
},
getSocket: function() {
return socket;
},
removeAllListeners: function() {
socket.removeAllListeners();
}
};
}
我在 AngularJS 中创建了上述工厂,并在函数中调用它,如下所示:
var socket=PermitFactory.socket();
socket.emit('message', 'ssss');
我在浏览器控制台中收到的错误是:
socket-io.js:4948 GET http://localhost:8000/socket.io/?EIO=3&transport=polling&t=LhvWuIr 404(未找到)
在服务器控制台中:
GET/socket.io/?EIO=3&transport=polling&t=LhvUygM 404 18.881 毫秒 - 1153
请帮忙!!!
最佳答案
您收到 404 (Not Found)
这意味着问题出在您的 url 而不是 cors 。
http://localhost:8000/
服务器启动了吗?套接字服务器..如果是这样,则在 wss://localhost:8000/
或 wss://之前的
wss
和 ws
本地主机:8000/
关于javascript - Socket.io跨域问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42967431/