kullanarak Websocket üzerinden istemciye mesaj gönderme Websocket ile Spring kullanmayı deneyin. Araştırmamı this tutorial ile başlattım. O inşaat büyükBahar
function connect() {
var socket = new SockJS('/myphotos/form');
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);
});
});
}
, benim denetleyicisi şu sınıfta benim sürecini yapabiliyorum: Benim yan istemcisi olarak
Ben sunucusuna bağlantıyı başlatmak için böyle bir şey var
@Controller
@RequestMapping("/")
public class PhotoController {
@MessageMapping("/form")
@SendTo("/topic/greetings")
public Greeting validate(AddPhotosForm addPhotosForm) {
return new Greeting("Hello world !");
}
}
Şimdi yapmak istediğim, istemciye "/ topic/greeting" mesajını dinleyen bir ileti gönderen bir iş parçacığı içeriyor. Bu gibi benim Runnable sınıf yazdı:
public class FireGreeting implements Runnable {
private PhotoController listener;
public FireGreeting(PhotoController listener) {
this.listener = listener;
}
@Override
public void run() {
while (true) {
try {
Thread.sleep(2000);
listener.fireGreeting();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Ve böyle benim denetleyici tamamladı: istediğim ama hiçbir şey istemci tarafında olduğu gibi yöntem PhotoController.fireGreeting denir
@Controller
@RequestMapping("/")
public class PhotoController {
@MessageMapping("/form")
@SendTo("/topic/greetings")
public Greeting validate(AddPhotosForm addPhotosForm) {
// added this part
FireGreeting r = new FireGreeting(this);
new Thread(r).start();
return new Greeting("Hello world !");
}
// added this method
@SendTo("/topic/greetings")
public Greeting fireGreeting() {
System.out.println("Fire");
return new Greeting("Fire");
}
}
. Herhangi bir öneriniz var mı? Teşekkür ederim.
okuyunuz [21.4.5 gönderme Mesajlar] (http://docs.spring.io/spring/docs/current/spring-framework-reference/html/: Doğru çözüm böyle bir şey yapmaktır Spring Websocket öğreticisinden websocket.html # websocket-stomp-handle-send). Bu kesinlikle böyle değil. Ayrıca ham iş parçacıklarını kullanmaktan ziyade, Spring [programlama mekanizması] (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/annotation/EnableScheduling.html) hakkında okuma yapmayı da düşünün (yanlış) . –
Bağlantı için teşekkürler, tam olarak yapmak istediğim şey bu. Kullandığım iş parçacığı hakkında, kesinlikle uygulamamın son durumunda kullanmayacağım. Sunucu tarafında, hangi adımların zaten yapıldığını bilmesi için müşteriye bilgi gönderecek uzun bir sürecim var. – cheb1k4