workerman 怎么部署在windows服务器上?

miniyang

非常之迷茫,各种方法都调试了几十遍了,都无法通过外网传递信息。网页ws = new WebSocket('ws://XX.XX.XX.XX:2345'),XX.XX.XX.XX是阿里云服务器绑定域名的IP。可文档是是内网IP。
服务器上PHP new Worker("websocket//0.0.0.0:2345"),可以运行。但是我换成Worker("websocket://XX.XX.XX.XX:2345")阿里云服务器绑定域名的IP后,就报错 E_ERROR "Uncaught Exception: 在其上下文中,该请求的地址无效。
服务器的2345端口,在阿里云控制台安全策略中上下行都是开通的。服务器系统的防火墙都是关闭的。我通过浏览器访问2345也可以帮到网站,说明其端口是可以访问的。
我要的实现的是常规的,A页面发信息,B页面不用刷新就能看见。而教程中并没有类似的基础的案例。只有类似AJAX的接受返回。且教程基本都是内网IP,没有服务器部署的教程。显然workerman不可能只在内网工作。

186 2 0
2个回答

walkor 打赏

服务端监听用0.0.0.0, 不要用ip,因为云服务器本地没外网网卡,无法监听外网ip。
new Worker("http://0.0.0.0:2345") 浏览器通过地址栏访问 http://XX.XX.XX.XX:2345
new Worker("websocket://0.0.0.0:2345") 浏览器通过js ws = new WebSocket('ws://XX.XX.XX.XX:2345')访问
也就是服务端和客户端协议要对应,例如服务端是http监听只能用http访问,不能用websocket访问。

关于教程都是内网IP访问,对应的内网IP你改成外网IP就行了,请灵活变通下。
workerman有很多例子,如果你要A发数据B能看到可以参考 https://www.workerman.net/doc/workerman/faq/how-to-broadcast.html ,另外社区里文档里各种即时通讯的例子。
关于workerman部署,就是启动就可以了,安全组防火墙开放对应端口。这些文档入门指引就介绍了。

  • 暂无评论
miniyang

问题已经解决了。
1,服务器上绑定方法,Worker("websocket//0.0.0.0:2345"),客户端绑定方法: WebSocket('ws:外网IP:2345')。两个是不一样的.太容易混淆。并不是有的文档说,两个要一致。复制的时候,也容易把websocket和ws复制错。
2,至于iis的URL重写,完全不用管,但要的注意,不要占用端口。workerman的start.PHP,并不需要在站点内。
3,端口开通要分上行下行和是否所有IP都可以访问。

  • 暂无评论
×
🔝