我需要一些帮助来通过 https 进行 netty 套接字 io。我已经在我的本地环境中找到了它,但没有在具有安全域的服务器上。服务器启动但客户端无法连接。尝试通过使用 IP 和域名启动套接字服务器。为了让服务器在 setHostname 方法中以域名作为主机名值开始,我在/etc/hosts 文件中添加了一个条目,如下所示
127.0.0.1 localhost example.com
套接字服务器通过将 example.com 作为主机名启动,但客户端无法使用与以下相同的主机名通过 https 进行连接
var socket = io.connect('https://example.com:10443')
也尝试了选项 - { secure: true, reconnect: true, rejectUnauthorized : false } 但同样的问题。
服务器端配置如下
Configuration configuration = new Configuration();
configuration.setHostname("example.com");
configuration.setPort(10443);
configuration.setKeyStorePassword("mypassword");
InputStream stream = getClass().getClassLoader().getResourceAsStream("keystore.jks");
configuration.setKeyStore(stream);
jsk 文件是使用 keytool 命令为同一域 (example.com) 创建的
要让套接字服务器使用端口 - 10443,还有什么要做的吗?或者还有什么其他配置要做吗?
最佳答案
得到解决方案!我没有提到该域是在 cloudflare 上设置的。这里的问题是我使用的端口 - 10443。cloudflare 不支持它。将其更改为 8443 并且有效!
遇到这种情况的 friend ,请找here Cloudflare 使用的支持端口列表。与我不同,可以节省您的大部分时间。
此外,请注意我在 setHostname() 方法中使用了我的公共(public) IP 作为主机名,因此我不需要在我的主机文件中添加任何内容。然后在客户端用 https 提供实际域名以连接到服务器。就是这样。谢谢大家!
桑迪普
关于java - 套接字 IO - 如何配置和连接到安全域上的 netty 套接字 io 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49208103/