在不同子域上使用Socket.IO服务器和客户端

whi

我有两个子域:

  • socket.mydomain.com-Socket.IO服务器
  • app.mydomain.com-我想连接到Web套接字的Web应用程序。

在app.mydomain.com的登录页面中,我已链接Socket.IO客户端脚本,并成功创建了IO对象,如下所示:

<script src=https://socket.mydomain.com/socket.io/socket.io.js></script>

<script type=text/javascript>
  const socket = io();
  socket.on('message', data => console.log(data));
</script>

但是,socket.mydomain.com客户端不是尝试连接,而是尝试连接app.mydomain.com由于处没有套接字app.mydomain.com,因此它会失败并继续重试。

有没有办法将我的应用程序连接app.mydomain.com到我的插座socket.mydomain.com还是这不可能?

更新资料

由于Socket.IO最近已升级到1.0(实际上是1.4),因此与此问题相关的大多数现有答案现在都使用过时的代码。然而,即使采取这些代码的变化考虑进去,它看起来像Socket.IO不允许我想要做的事。

当Socket.IO与服务器建立初始连接时,它将发送XHR,并将withCredentials设置设置为true。但是您不能将其withCredentials设置为true在服务器上允许CORS。所以看来我的问题实际上是,“是否有办法解决这个问题?”

whi

为了完成我想要的工作,需要正确配置几件事,并且需要使用最新的Socket.IO语法:

  • 必须在socket.mydomain.com服务器上启用CORS Access-Control-Allow-Origin标头设置为*

  • 必须在服务器(socket.mydomain.com上指定可接受的传输

    const app = express();
    const server = http.createServer(app);
    const io = require('socket.io')(server, {
      transports: ['websocket', 'xhr-polling']
    });
    
  • 必须在客户端(app.mydomain.com上指定远程服务器和可接受的传输

    const socket = io('socket.mydomain.com', {
      transports: ['websocket', 'xhr-polling']
    });
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用socket.io和nodejs强制客户端与服务器断开连接

python服务器和javascript客户端的socket.io连接问题

socket.io 客户端无法连接和接收服务器发出的消息

Socket.io Node Js服务器和React js客户端未连接

Socket.io-在服务器和客户端之间同步数据

Express,用于浏览器客户端和node.js客户端的socket.io服务器

带有Firebase托管上的客户端和Heroku上的服务器的Socket.io

如何使用socket.io从客户端调用服务器端功能?

无法使用 socket.io 在 nodejs 服务器和客户端之间通信我的数据

浏览器与服务器在socket.io客户端行为上的差异

在Node.js上使用soket.io进行服务器和客户端之间的连接

无法在 Android 客户端和 Node.js socket.io 服务器之间通信

socket.io服务器可以与非socket.io客户端通信吗

Socket.io:如何唯一标识客户端和服务器上的连接?

如何使用套接字IO在Python客户端和NodeJS服务器之间进行通信?

Java Script & Socket IO:无法从客户端向服务器发出值以操作服务器上的变量

Nestjs 服务器不为 socket.io 客户端提供服务

Socket.io 客户端无法与 websocket 服务器配合使用

使用 socket.io 的聊天应用程序背后的客户端 - 服务器架构

使用Socket.IO的Python客户端到nodeJS服务器

使用Socket.io将客户端连接到服务器

使用标准Web套接字客户端连接到Socket.io服务器

使用socket.io-stream将文件从服务器流传输到客户端

客户端无法使用socket.io连接到服务器

当客户端使用 Socket.io 发送到服务器时关闭快速服务器

使用socket.io和C#客户端与Compute Engine上的Node.js服务器代码进行通信

带有Socket.IO的ReactJS,服务器向客户端发送,但客户端不向服务器发送

Express与Socket.IO:服务器不接收来自客户端的发射

在Socket.io中将回调函数从客户端发送到服务器