当前位置: 首页 > 知识库问答 >
问题:

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

邹博裕
2023-03-14

我无法连接到我的节点。js服务器。当通过节点使用http web服务器在本地运行它时,它工作得很好,但是当连接到外部时,它会加载<code>socket.io。js文件很好,但当尝试使用套接字时,它会从URL中删除端口,无法连接。

而不是在网络请求中执行此操作:

http://external-domain.com:3000/socket.io/?EIO=3

它是这样做的:

http://external-domain.com/socket.io/?EIO=3

我不知道如何使它不从连接中删除端口。我如何着手解决这个问题?

服务器

const path = require('path');
const http = require('http');
const express = require('express');
const socketIO = require('socket.io');

const publicPath = path.join(__dirname, '../public');
var app = express();
var server = http.createServer(app);
var io = socketIO(server);

app.use(express.static(publicPath));

server.listen(3000, () => {
  console.log(`Server is up on port 3000`);
});

客户端脚本标记

<script src="http://external-domain.com:3000/socket.io/socket.io.js"></script>

不同域上的客户端JS

var socket = io();

socket.connect('http://external-domain.com:3000');

socket.on('connect', function () {
  console.log('Connected to server.');
});

共有2个答案

罗星洲
2023-03-14

使用io.connect("url ")

var socket = io.connect("http://external-domain.com:3000", { rejectUnauthorized: false });

//{rejectUnauthorized:false}是可选参数。

希望这对你有用。

张俊茂
2023-03-14

从此更改:

var socket = io();
socket.connect('http://external-domain.com:3000');

仅限于此:

var socket = io("http://external-domain.com:3000");

并且,您不使用< code>socket.connect(),因为您已经请求了与< code > io(" http://external-domain . com:3000 ")的连接;呼叫。

解释

代码:

var socket = io();

使用页面URL连接到位于该原点的socket.io服务器。这显然不是你想要的。

如果你想使用。连接()方法,它会是这样的:

var socket = io.connect("http://external-domain.com:3000");

注意:var套接字=io(url)只是var套接字=io.connect(url)的快捷方式。

<code>套接字。connect()不接受URL作为参数,所以您没有正确使用它。它只是socket.open()的同义词。

 类似资料:
  • 无法连接到本链接中提到的greeter grpc服务-https://docs . Microsoft . com/en-us/aspnet/core/tutorials/grpc/grpc-start?欢迎客户端的view=aspnetcore-3.0,它是使用grpc.core库(< code>Grpc)从. net framework应用程序编写的。核心2.24.0和< code>Grpc。

  • 所有的 我正在尝试连接到Oracle 19C数据库。我安装了两个Oracle客户端(11g和12c),因为我们需要支持遗留程序。我可以通过12c客户端与使用sqlplus的任何用户连接,没有问题。但是如果我与任何用户一起使用11g(11.2.0)客户端。我总是得到: 两个客户端都有完全相同的sqlnet。ora和tnsnames。ora文件,因此两个客户端都指向同一个数据库。 有什么想法吗?我是否

  • 问题内容: 我为远程服务器编写了以下hbase客户端类: 它引发了一些异常: 您能告诉我为什么会引发异常,代码有什么问题以及如何解决它。 问题答案: 由于您的HBase服务器的hosts文件,因此会发生此问题。 您只需要编辑HBase服务器的/ etc / hosts文件。 从该文件中删除localhost条目,然后将localhost条目放在HBase服务器IP的前面。 例如,您的HBase服务

  • 我正在使用mac,版本10.14.6,Appium v 1.15和Java8。 我启动Appium作为应用程序,然后试图启动我的自动测试,但有一个失败时,Java试图创建Android驱动程序实例 查看具有功能的屏幕截图 堆栈跟踪 我想这可能是由于Mac的安全策略,因为在Windows上一切都正常。我应该如何解决该问题?

  • Lua客户机中的on connection事件被触发并打印“connected”,但Node.js socket.io服务器中的on connection事件没有被触发。我用Python套接字服务器尝试了Lua客户机,它工作得很好!我还尝试了一个带有Javascript套接字客户端的Node.js套接字服务器,它运行得很好! NodeMCU和socket.io之间是否存在兼容性问题?

  • 我正在使用spring、spring boot、eureka(用于服务发现)和ribbon开发一个微服务应用程序。 我的应用程序由三个服务组成:客户端、服务器和eureka服务器 客户端和服务器都在eureka服务器上注册,之后客户端使用eureka服务发现调用服务器。 我可以在本地运行应用程序,一切都很好。 但是当部署在aws上时,事情就会失控。 接下来的步骤 同一安全组中有三个ec2实例 每个