首页 > 解决方案 > Socket.io v4 基本实现

问题描述

我正在将应用程序从 V2 迁移到 V4,但我真的不认为这是这里的问题。我的问题是我的客户端和服务器之间建立了连接,尽管服务器似乎没有返回全局 io 对象。

服务器配置

var app = require('http').createServer((request, response) => {
  response.writeHead(200);
  response.end();
});

var io = require('socket.io')(app, {
  path: '/my-app', 
  reconnectionAttempts: 10,
  cors: {
    origin: ["https://my-website.com"],
    methods: ["GET", "POST"], 
    transports: ['websocket', 'polling'],
  }
});

app.listen(3000, 'localhost', () => {
  console.log('Listening on localhost:3000');
});

客户端配置

var socket = io('/', { path: "/my-app" });

在客户端,我将路径添加到我的应用程序:

<script src="/my-app/socket.io.js?EIO=4&transport=polling"></script>

不过,这里的文档真的不清楚。在不向应用程序 url 添加 EIO 和传输参数的情况下进行测试会从服务器返回错误代码(“传输:未知”)。

然后作为客户端,如果我在浏览器中加载我的页面,服务器会记录连接已建立的状态:

socket.io:server incoming connection with id jCxIvx9FU1_x_khdAAAB +3m

虽然在我的浏览器控制台中我收到以下错误:

Uncaught SyntaxError: Unexpected token '{' => socket.io.js?EIO=4&transport=polling:1
Uncaught ReferenceError: io is not defined => path/to/my/script.js

知道有什么问题吗?实际上,控制台中似乎也没有 io 对象。就像服务器没有将它传递给客户端一样。

标签: node.jssocket.io

解决方案


推荐阅读