尝试使用Spring 4 WebSocket与STOMP通过使用Sockjs套接字。我面临一个问题。
我的配置:
websocket.xml-Spring上下文的一部分
<websocket:message-broker application-destination-prefix="/app">
<websocket:stomp-endpoint path="/ws">
<websocket:sockjs/>
</websocket:stomp-endpoint>
<websocket:simple-broker prefix="/topic"/>
</websocket:message-broker>
控制器代码:
@MessageMapping("/ws")
@SendTo("/topic/ws")
public AjaxResponse hello() throws Exception {
AjaxResponse ajaxResponse = new AjaxResponse();
ajaxResponse.setSuccess(true);
ajaxResponse.addSuccessMessage("WEB SOCKET!!! HELL YEAH!");
return ajaxResponse;
}
客户端:
var socket = new SockJS("<c:url value='/ws'/>");
var stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
alert('Connected: ' + frame);
stompClient.send("/app/ws", {}, {});
stompClient.subscribe('/topic/ws', function(response){
alert(response.success);
});
});
输出:
Opening Web Socket... stomp.js:130
GET http://localhost:8080/ws/info 404 (Not Found) sockjs-0.3.js:807
Whoops! Lost connection to undefined stomp.js:130
我做错了什么?
我在谷歌(TickerStocks或类似的东西,问候应用程序(Spring的例子))中找到了一些例子,所有这些都给了我同样的错误。我尝试使用WebSocket进行握手(不使用sockjs)-结果相同。
补充资料:
方法publicAjaxResponse hello()
放置在根上下文“/”上的IndexController中。因此我可以提供完整路径:
http://localhost:8080/ws
。部署测试过的tomcat7和tomcat8。
例如,如果我想请求/ws,我应该创建SockJS与路径/服务器/app/ws,你也可以代码与var套接字=新的SockJS("
其次,您必须将路径“/app/*”添加到org。springframework。网状物servlet。DispatcherServlet,以避免web中定义的拦截器截获前缀为“/app”的路径。xml。
我认为你的问题可能与这一问题相同,其公认的答案也适用。
简而言之:检查如何映射DispatcherServlet。要使endpointURL为http://localhost:8080/ws
,DispatcherServlet和应用程序上下文根应设置为/。
在你的网站上应该是这样的。xml
:
<servlet>
<servlet-name>WebSocketDispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>WebSocketDispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
这或您需要在endpointURL中包含上下文根和调度程序映射:
http://<server>:<port>/<context-root>/<dispatcher-mapping>/ws
希望能对你有所帮助。
当做
海伦诺
我遵循Boris The Spider的建议,开始使用Java配置(AppConfig和WebInit文件)而不是XML配置文件。当我完成迁移-我尝试webSocket-和它的作品!我认为主要问题在于WebSocket的XML配置。
我是Heroku的新手,我正在尝试部署使用socket.io侦听的NodeJS应用程序。我能够部署到本地和它的工作罚款。但是当在Heroku中运行相同的内容时,它没有响应。 在Heroku中有没有需要为套接字io指定的特定端口?我不能使用process.env.port,因为我正在将其用于app server端口。 有什么解决这个问题的想法吗?或者我们需要启用一些配置来使用套接字IO吗? 我想我们
问题内容: 我正在使用OpenShift和WildFly 8.2.1 final来实现新的HTML5 websocket。我使用了本教程来设置这个项目。 每当我打开MyTest.html时,这就是JavaScript记录的内容: 服务器连接,然后立即断开连接。为什么?我究竟做错了什么?有什么我想念的吗? 这是模式代码-> serverendpoint.java MyTest.html: 和pom.
在一个简单的客户端-服务器TCP套接字中,当我试图在Android Studio中创建客户端套接字时,遇到了一个问题。导致错误的指令是<code>Sockets=new Socket(主机名,端口) 我使用的端口是 1993,我尝试了变量的一些值: 在每种情况下,应用程序都会因为这个错误而停止,下面的错误属于第一点,其他的得到类似的错误。 Eclipse中的相同指令工作,我在命令行上使用服务器“n
我正在构建一个无状态Spring(4.2.4.RELEASE)解决方案,使用STOMP over Websockets和SockJS,以及使用JWT连接移动设备和全双工通信的Restendpoint。我使用Tomcat 8.0.33作为Web服务器,并使用html和sockjs javascript客户端进行测试。stomp协议使用http回退可以很好地工作,但我不能仅使用websocket协议。
这很好,但没有SSL。 我已经使用OpenSSL为服务器和客户机生成了SSL证书,结果是: 服务器的证书(PEM格式) 客户端的证书(PEM格式) 服务器的私钥(PEM格式) 客户端的私钥(PEM格式) CA文件(PEM、CER和CRT格式) null 会出什么问题?
Nginx 1.1.4可用于与HTTP1的上游连接。1 keepalive指令,请参阅官方文档(它与keepalive客户端的连接不同)。所以独角兽的配置可以如下所示: HTTP连接需要这些标头:proxy_http_version和proxy_set_header。 所以问题是配置有效还是套接字连接本身是永久的?