我简单的测试代码是: index.html
<script src="http://localhost:2020/socket.io/socket.io.js"></script>
<script>
socket = io('http://localhost:2020'/*,{secure: true}*/);
</script>
注意:我删除了安全性true。
app.js Nodejs
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");
});
});
如果我在其他浏览器上打开新页面(新连接)(例如chrome上的示例和Opera上的其他实例)时,使用nodejs在套接字服务器上测试简单连接时,第二个实例不起作用或出现阻塞,不要打开页面也不要调用socket.io服务器,但是当我在Chrome上打开新标签页时,带有新连接的新标签页可以正常工作。...
请注意:该客户端页面未托管在socket.io服务器上,因为该客户端页面托管在apache服务器上。
P1-我在Chome中打开index.html =页面正常运行,套接字正确连接
P2-我在新的Chrome标签中打开index.html =页面正常运行并连接。
P3-我以无痕镶边打开index.html或在Opera(其他浏览器)上打开 =套接字未连接且页面被阻止
P4-我做(刷新)我在chrome(P2)中打开的套接字,即刷新了新的chrome标签。 套接字服务器仍然被阻止,甚至无法连接。
P5-我刷新(P1)的页面: =一切都已解锁,并且主页上所有被阻止的页面现在都可以正常连接到套接字
发生以下情况:如果index.html托管在NodeJS之外,但是例如如果我创建了index.html例如托管在Nodejs视图中,则它没有通过,问题是我的应用程序被认为是可加载的小部件在nodejs外部。
答案 0 :(得分:-1)
安全选项适用于https连接,您正尝试连接到http。尝试删除安全选项。