使用ngrok与websocket(或socket.io)

33

有没有简单的示例代码展示在本地主机上运行的node.js下的ngrok转发socket.io/websocket?

换句话说,是否存在这样一种情况

ngrok http 3000

与运行在3000端口上的Node.js服务器和Socket.io一起工作?或者类似的东西

ngrok http+tcp 3000 (just wild guessing)

19
你应该将你的解决方案添加为答案并接受它,这样会更清晰明了。 - Lope
4个回答

10

是的。如果您的节点应用程序正在使用端口3000(如您的示例中所示),则只需使用ngrok创建反向代理将3000暴露给全世界即可。Websockets将与其完美配合。


4

(自问自答从问题移至答案部分)

只需简单使用

ngrok http 3000

您将看到本地主机绑定的Web地址字符串。因此,在客户端JavaScript代码中,请更改

var socket = io.connect('http://localhost:3000');

to

var socket = io.connect('http://94349fe6.ngrok.io');

注意:

http://94349fe6.ngrok.io 只是一个网址字符串,你的与此不同。

实际上,如果只是执行以下操作:

var socket = io();

根据 socket.io 简介 的说明:

默认情况下,它会尝试连接到提供页面的主机。

因此,它同样有效。

我正在尝试通过JavaScript的WebSocket构造函数建立连接,它说协议需要是 ws:// 或者 wss:// - Robo Robok

0
如果你想要使用ngrok上的socket,你只需要创建ngrok链接即可。
ngrok tcp 3000

//and hit you Socket API endpoint like: 
tcp.ngrok.io:15819/api/v1/partner/profile?partner_id=27

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接