Spring 4 Websocket – 什么都没发生
我正在学习spring 4 websocket,如果有人能指导我一步一步地学习spring 4 websocket,我会非常感激,或者可以建议一些书,我可以在这个主题上找到一步一步的实用方法。
但在此之前需要一点帮助,我想尝试使用tomcat 8在eclipse上执行这个片段。
的index.html
Hello WebSocket var stompClient = null; function setConnected(connected) { document.getElementById('connect').disabled = connected; document.getElementById('disconnect').disabled = !connected; document.getElementById('conversationDiv').style.visibility = connected ? 'visible' : 'hidden'; document.getElementById('response').innerHTML = ''; } function connect() { var socket = new SockJS(""); stompClient = Stomp.over(socket); stompClient.connect('', '', function(frame) { setConnected(true); console.log('Connected: ' + frame); stompClient.subscribe("", function(greeting){ showGreeting(JSON.parse(greeting.body).content); }); }); } function disconnect() { stompClient.disconnect(); setConnected(false); console.log("Disconnected"); } function sendName() { var name = document.getElementById('name').value; stompClient.send("", {}, JSON.stringify({ 'name': name })); } function showGreeting(message) { var response = document.getElementById('response'); var p = document.createElement('p'); p.style.wordWrap = 'break-word'; p.appendChild(document.createTextNode(message)); response.appendChild(p); } Seems your browser doesn't support Javascript! Websocket relies on Javascript being enabled. Please enable Javascript and reload this page!
Greeting.java
public class Greeting { private String content; public Greeting(String content) { this.content = content; } public String getContent() { return content; } }
GreetingController.java
import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.handler.annotation.SendTo; import org.springframework.stereotype.Controller; @Controller public class GreetingController { @MessageMapping("/hello") @SendTo("/topic/greetings") public Greeting greeting(HelloMessage message) throws Exception { Thread.sleep(3000); // simulated delay System.out.println(message.getName()); return new Greeting("Hello, " + message.getName() + "!"); } }
HelloMessage.java
package com.iiw.controller.relationship; public class HelloMessage { private String name; public String getName() { return name; } }
WebsocketConfig.xml
web.xml中
CRUDWebAppMavenized org.springframework.web.context.ContextLoaderListener contextConfigLocation /WEB-INF/applicationContext.xml , /WEB-INF/SecurityContext.xml , /WEB-INF/WebSocketConfig.xml org.springframework.web.util.Log4jConfigListener log4jConfigLocation classpath:log4j.xml spring org.springframework.web.servlet.DispatcherServlet 1 spring / springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain /* index.jsp
问题是我每次运行此代码时,都没有给出任何信息
更改连接function
从:
function connect() { var socket = new SockJS(" "); stompClient = Stomp.over(socket); stompClient.connect('', '', function(frame) { setConnected(true); console.log('Connected: ' + frame); stompClient.subscribe(" ", function(greeting){ showGreeting(JSON.parse(greeting.body).content); }); }); }
至:
function connect() { var socket = new SockJS(" "); stompClient = Stomp.over(socket); stompClient.connect('', '', function(frame) { setConnected(true); console.log('Connected: ' + frame); stompClient.subscribe('/topic/greetings', function(greeting){ showGreeting(JSON.parse(greeting.body).content); }); }); }
和sendName()类似
从:
function sendName() { var name = document.getElementById('name').value; stompClient.send(" ", {}, JSON.stringify({ 'name': name })); }
至:
function sendName() { var name = document.getElementById('name').value; stompClient.send('/app/hello', {}, JSON.stringify({ 'name': name })); }