来自互联网的本地 Socket.io 连接

Posted

技术标签:

【中文标题】来自互联网的本地 Socket.io 连接【英文标题】:Socket.io connection local from internet 【发布时间】:2016-07-06 13:52:40 【问题描述】:

我必须使用 socket.io 创建一个系统,服务器在本地(没有端口转发)(socket.io 在端口 6255 上侦听)和客户端(socket.io.js)在在线托管的 Web 服务器上由托管方提供。

我尝试在这两个服务器之间进行通信,但每次连接都超时。

服务器端连接:http://pastebin.com/xAFkserq

客户端连接:http://pastebin.com/ZMvbR3hC

是否可以在两个“网络”之间进行通信?或者这只是一个编码问题?

感谢您的帮助:)

【问题讨论】:

【参考方案1】:

你是不是错过了这个?

io.on('connection', function(socket)
  console.log('connected');
);

另外,您是否尝试过遵循 Socket.IO 文档中的示例?

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function(req, res)
   res.sendfile('index.html');
);

io.on('connection', function(socket)
  console.log('a user connected');
);

http.listen(3000, function()
  console.log('listening on *:3000');
);

使用套接字可能很棘手,请检查您的网络是否以某种方式阻止了消息交换。

【讨论】:

但我不想使用 express 或其他 http 系统,因为客户端实际上是前端部分,所以我不想让服务器发送 html 文件只是一个“socket. io服务器”【参考方案2】:

您不应该在客户端使用 socket.io 调用 connect

在客户端只需执行:var socket = io(); 连接回服务器,一旦客户端 JS 服务完成

编辑:

由于您没有使用 express 并且打算只使用 socket.io 侦听器,因此示例 here 应该提供您需要的信息

【讨论】:

我也有同样的问题,连接超时:/ 那么您将不得不发布其余的代码。如果您无法连接,您的服务器不太可能在监听。 您应该将该代码放在原始问题中。如果您不使用 express,请查看未使用 express 的示例here。在这种情况下,您可能需要使用connect。看来他们不是在服务器端使用listen 我也有这个错误:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,Origin '***' 不允许访问。我不知道该怎么办:/

以上是关于来自互联网的本地 Socket.io 连接的主要内容,如果未能解决你的问题,请参考以下文章

如何检测 socket.io 上的断开连接?

断开连接/错误时清除 socket.io 缓冲区

Socket io 未在 HTTPS 中将 nodejs 与 android(客户端)连接

socket.io xhr 在慢速连接上发布错误(3G 移动网络)

来自 php 源的 Socket.io

来自 php 源的 Socket.io