Javascript 客户端无法使用socket.io连接到服务器
我无法从外部域连接到node.js服务器。当通过节点使用http web服务器在本地运行时,它可以正常工作。但是,当外部连接时,它会加载Javascript 客户端无法使用socket.io连接到服务器,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我无法从外部域连接到node.js服务器。当通过节点使用http web服务器在本地运行时,它可以正常工作。但是,当外部连接时,它会加载socket.io.js文件,但当尝试使用socket时,它会从URL中删除端口,无法连接 而不是在网络请求中执行此操作: 它是这样做的: 我不知道如何使它不从连接中删除端口。我该如何着手解决这个问题 服务器 const path = require('path'); const http = require('http'); const express =
socket.io.js
文件,但当尝试使用socket时,它会从URL中删除端口,无法连接
而不是在网络请求中执行此操作:
它是这样做的:
我不知道如何使它不从连接中删除端口。我该如何着手解决这个问题
服务器
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>
对此进行更改:
var socket = io();
socket.connect('http://external-domain.com:3000');
为此:
var socket = io("http://external-domain.com:3000");
而且,您不需要使用socket.connect()
,因为您已经请求了与io(“http://external-domain.com:3000");代码>呼叫
解释
守则:
var socket = io();
使用页面URL连接到该源位置的socket.io服务器。这显然不是你想要的
如果您想使用.connect()
方法,则如下所示:
var socket = io.connect("http://external-domain.com:3000");
注意:var socket=io(url)
只是var socket=io.connect(url)
的快捷方式
不接受URL作为参数,因此您没有正确使用它。它只是socket.open()的同义词
更改如下:
var socket = io();
socket.connect('http://external-domain.com:3000');
为此:
var socket = io("http://external-domain.com:3000");
而且,您不需要使用socket.connect()
,因为您已经请求了与io(“http://external-domain.com:3000");代码>呼叫
解释
守则:
var socket = io();
使用页面URL连接到该源位置的socket.io服务器。这显然不是你想要的
如果您想使用.connect()
方法,则如下所示:
var socket = io.connect("http://external-domain.com:3000");
注意:var socket=io(url)
只是var socket=io.connect(url)
的快捷方式
不接受URL作为参数,因此您没有正确使用它。它只是socket.open()的同义词
使用io.connect(“url”)
/{rejectUnauthorized:false}
是可选参数
希望这对您有用。使用io.connect(“url”)
/{rejectUnauthorized:false}
是可选参数
希望这对你有用。哦,哇,真有用,谢谢!只是好奇,这两者之间有什么区别?@FirstLegion-我的答案中添加了更多的解释。哦,哇,这很有效,谢谢!只是好奇,两者之间有什么区别?@FirstLegion-我的答案中添加了更多的解释。被拒绝似乎没有问题,因为它没有找到正确的URL。被拒绝似乎没有问题,因为它没有找到正确的URL。