背景:使用socketio实现游戏服务器时,在本地跑没问题,当把socketio的host地址改成服务器的公网ip发现无法打包。
报错示例:
Caused by: java.net.BindException: Cannot assign requested address: bind
at sun.nio.ch.Net.bind0(Native Method) ~[na:1.8.0_371]
at sun.nio.ch.Net.bind(Net.java:438) ~[na:1.8.0_371]
at sun.nio.ch.Net.bind(Net.java:430) ~[na:1.8.0_371]
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:225)
原因:使用maven打包的时候他会编译一下代码,而远程服务器并没有运行socketio服务器,所以无法绑定,出现报错信息。
解决方法:在yaml文件中修改host配置如下
socketio: # socketio请求地址
host: 0.0.0.0
使用localhost和127.0.0.1都不行,原因可能是服务器有公网ip和内网ip,使用localhost和127.0.0.1对应的是内网ip,此时前端使用公网ip去访问socketio服务器会显示无法连接到socketio服务器,而0.0.0.0是对应该服务器的所有ip,包括公网ip,此时可以访问。