我正在尝试使用STOMP和websockets从我的应用程序中的任何位置发送消息。但是,我遇到了麻烦,因为我无法做出问候"方法静态因为" this.template"在方法内部。然后我无法调用该方法。我该如何解决这个问题?
这是我的Controller类:
@Controller
public class HelloController {
@Autowired
private SimpMessagingTemplate template;
@Autowired
public HelloController(SimpMessagingTemplate template) {
this.template = template;
}
public HelloController() {
}
public static void replier(String reply) {
greet(reply);
}
@RequestMapping(value="/hello", method=RequestMethod.POST)
public void greet(String greeting) {
Greeting text = new Greeting("Goodbye, " + greeting + "!");
this.template.convertAndSend("/topic/greetings", text);
}
@RequestMapping(value="/", method=RequestMethod.GET)
public String index() {
return "index";
}
@MessageMapping("/hello")
@SendTo("/queue/greetings")
public static Greeting greeting(HelloMessage message) throws Exception {
System.out.println("Sending message...");
beginRoute(message.getName());
return new Greeting("Hello, " + message.getName() + "!");
}
@SendTo("/queue/informer")
public static Greeting beginRoute(String message) {
Application.startBody(message);
//System.out.println("Returning from second message!");
return new Greeting("So long, " + message + "!");
}
replier方法中的greet(reply)调用无效,因为我无法对非静态方法进行静态调用。我如何打电话问候并发送信息?
答案 0 :(得分:2)
我不明白为什么你认为greeting
需要是静态的。
我在websocket documentation上找到了这个:
@Controller
public class GreetingController {
@MessageMapping("/greeting") {
public String handle(String greeting) {
return "[" + getTimestamp() + ": " + greeting;
}
}
尝试使greeting
不是静态的。如果您遇到非静态方法的问题,请告诉我们它们是什么。