node.js - 为什么socket.io在同一台电脑上使用两个不同的浏览器不起作用(我无法连接或页面仍然永远等待)
问题描述
我的简单测试代码是:index.html
<script src="http://localhost:2020/socket.io/socket.io.js"></script>
<script>
socket = io('http://localhost:2020'/*,{secure: true}*/);
</script>
注意:我删除了安全的真实。
app.js 节点js
var express = require('express'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server),
path = require("path");
app.use(express.static(__dirname + '/public'));
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
server.listen(2020);
console.log("localhost:2020");
io.on('connection', function(socket) {
console.log("in");
socket.on('disconnect',function(data){
console.log("out");
});
});
当我在我的套接字服务器上使用 nodejs 测试简单连接时,如果我在不同的浏览器上打开一个新页面(新连接),例如 chrome 和 opera 上的其他实例,第二个实例不起作用或有阻塞,不要打开页面并且不调用socket.io服务器但是当我在chrome上打开一个新标签时,带有新连接的新标签工作正常......
注意:客户端页面不托管在 socket.io 服务器上,因为客户端页面托管在 apache 服务器上。
P1-我在Chome中打开index.html = 页面运行正常,socket连接正确
P2- 我在新的 Chrome 选项卡中打开 index.html = 页面正常运行并连接。
P3-我在隐身chrome中打开index.html或在Opera(其他浏览器)上打开=套接字未连接并且页面被阻止
P4-我做(刷新)我在 chrome(P2) 中打开的套接字,也就是说,我刷新了新的 chrome 选项卡。套接字服务器仍然被阻塞,甚至没有连接。
P5-我刷新(P1)的页面:=一切都已解锁,并且主页上的所有页面现在都被阻止了,现在可以正常连接到套接字
如果 index.html 托管在 NodeJS 之外,则会发生这种情况,但是例如,如果我创建托管在 Nodejs 视图中的 index.html,它不会通过,问题是我的应用程序被认为是加载到 nodejs 外部的小部件.
解决方案
安全选项适用于 https 连接,并且您正在尝试连接到 http。尝试删除安全选项。
推荐阅读
- javascript - 如何使用 next/script 组件(Next.js 11)加载谷歌标签管理器?
- ruby - Windows 10终端输入上的Ruby irb utf-8编码问题
- php - 如何从会话数组 PHP 中取消设置密钥
- html - 我的网站是基于 jekyll 的,如何使用 CSS flexbox 对其中的一部分进行风格化?
- arrays - 是否可以在不使用 for 循环的情况下从数组重写工作簿中的行(所有行值)?
- android - 如何在选定的edittext视图上设置项目的文本?
- javascript - 此 addEventListener 缺少什么数据类型?
- python - 字典如 get() 在 pandas Series 上,索引值如 iloc
- apache-flink - 遇到数据库连接异常时,flink 作业失败
- java - 谷歌驱动示例代码显示jackson2包不存在java编译时错误