我尝试使用Spring MVC进行简单的websocket聊天
源代码可在GitHub上的我的存储库中找到
它由以下部分组成:
欢迎视图页面index.jsp包含用户输入的昵称和密码以及将其绑定到新用户实例的表单。
用户实例传递给Spring MVC控制器MainController.java。 Controller创建链接到chat.jsp的新ModelAndView,并将User实例传递给它,以便在标题和聊天窗口中显示用户的昵称。 chat.jsp包含提供与Chat.java中的websocket端点的连接的js代码。它还将用户的nikname传递给端点,以将其存储在String字段中 当我在我的本地Tomcat 8上尝试它时,一切正常,就像预期一样。
但是当我在OpenShift的Tomcat 7远程主机上试用它时,它无法正常工作。
以下是截图:
正如您所看到的,用户的昵称未显示在标头中,并且未通过请求网址传递到端点。
似乎即使User实例还没有从Spring MVC控制器传递到chat.jsp视图页面
有人可以解释一下我做错了吗?
答案 0 :(得分:2)
我在那里看到两个问题:
Ws和wss端口 - use ports 8000 or 8443用于OpenShift上的Web套接字连接。我建议修改您的chat.jsp
:
Chat.initialize = function () {
if (window.location.protocol == 'http:') {
Chat.connect('ws://' + window.location.host + ':8000/websocket/chat/${user.nickname}');
} else {
Chat.connect('wss://' + window.location.host + ':8443/websocket/chat/${user.nickname}');
}
};
Tomcat服务器版本。您可以使用this quick-start在OpenShift Online上运行Tomcat 8。然而,当我尝试使用快速启动时,我遇到了一些麻烦所以我改变了一些东西并创建了PR;在它合并之前,您可以从here获取适合我的版本。为了在小型DIY设备上部署Tomcat 8,您可以使用以下命令:rhc app create tomcat8 diy --from-code https://github.com/jiri-fiala/openshift-tomcat8-quickstart
。将tomcat8
替换为您的应用所需的名称。请注意,下载和编译Tomcat 8需要几分钟时间。
在OpenShift上运行Tomcat 8后,我使用Tomcat的Web界面将代码部署为ROOT.war
(我使用mvn package
在本地创建了一个包)。测试聊天应用似乎没问题。
当然,这不是一个理想的部署; Web应用程序以这种方式部署到数据目录。 OpenShift Online目前不提供Tomcat 8盒式磁带,您可以将代码推送到repo中,并自动构建和部署Web应用程序。
答案 1 :(得分:0)