一时兴起,打算做一个胡乱聊天的小demo,也就是谁都可以在里面聊天,知道服务器崩溃为止也不介意,不会保存任何聊天数据。然后用了WebSocet,一个简单的web项目,服务器是tomcat7。
刚开始在电脑本机是上跑,完美,聊的飞起,然后部署到我的云服务上,接下来遇到了几个坑:
坑一、websocket的链接在https上只能用wss,也就是如下图:
的地方必须是wss,否则会报如下错误:
This request has been blocked; this endpoint must be available over WSS.
好的这一个坑小意思,兼容一下即可解决。
然后解决后遇到了如下坑2:
坑二、一访问,然后报错误Error during WebSocket handshake: Unexpected response code: 404,一脸懵逼,然后就上网上查找原因。网上原因
大多数都是什么tomcat7的什么包有问题呀,tomcat7本身具有对websocket的实现这些什么鬼。然后我就又去tomcat下把包考过来,然而还是报错。
在我即将放弃的时候,突然想到,是不是nginx的原因,根据关键词 ngnix websocket 404 https去搜索一下,果然完美的找到了答案。只需要在ngnix.conf加如下内容即可。
配置nginx支持websocket,默认情况下,nginx不支持自动升级至websocket协议,否则js中会出现上面的异常,加了这个内容就可以啦。重启nginx完美。可能也需要设置一下链接时间,超时什么的。