javascript - Socket.io跨域问题

标签 javascript angularjs node.js apache sockets

我有一个在 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://之前的 wssws本地主机:8000/

关于javascript - Socket.io跨域问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42967431/

相关文章:

node.js - 如何捕获通过 HTTP 传输的 mp3 的前 10 秒

javascript - 当我在 expressjs 中使用 req.param 并在我的后 Controller 中使用 nodejs 时,我得到 UNDEFINED

javascript - 在 discord.js 中发送文件缓冲区

javascript - React Deploying to AWS S3 production using npm - index.html 文件作为最后

javascript - 如何将值从服务传递到组件的方法

javascript - 为什么我的 EventListener 被调用两次?

javascript - 在 jQuery 插件中不使用事件进行绑定(bind)

javascript - 基于 bool 值的 ng-grid 中的颜色图标

javascript - Tomcat REST API 上的 CORS 访问

javascript - 没有范围刷新的 Angular $interval