2012-08-30 13 views
21

Bir Jetty Websocket servlet uygularım. Sunucu yeni bir bağlantı aldığında, websocket'un onopen işleviyle okunacak bir mesaj göndermek istiyorum. Bu iletinin yalnızca açıkken ve normal connection.SendMessage() işlevini kullanmadan gönderilmesini istiyorum. Bunu yapmak mümkün mü? ve nasıl?websocket bağlantısı açıldığında veri göndermek mümkün

cevap

15

Protokolde bunun için destek yok, ancak kendiniz bir şeyleri fışkırtabilirsiniz.

  • Sunucunuz bir el sıkışma işlemini tamamladığında, istemciye teslim etmek istediğiniz ilk iletiyi saklayın.
  • Müşterinizin onopen işlevinde, "başlangıç ​​iletisini oku" isteği gönderin.
  • Sunucunuzda, bu istemcinin ilk iletisini okumadığını kontrol edin; mesajla cevap vermek; İlk mesajın gönderildiğini belirten bir bayrak ayarlayın.
  • İstemciniz ve sunucunuz artık başka iletiler göndermekte serbesttir.
+0

Online arama yaparken bir şeyleri gözden kaçırmış olabilir miyim diye merak ediyordum. Önerdiğin yaklaşımı takip edeceğim. – DPD

34

Sorgu dizesini unutmayın. WebSocket URL'sinde geçerlidir.

new Websocket('ws://yoursite.com/path?a=1&b=2&c=3') 

Ardından, verileri almak için sunucu tarafında bu URL'yi kolayca ayrıştırabilirsiniz.

+0

ya da sunucu tarafında URL'yi nasıl ayrıştırıyorsunuz? url kendisi nerede kullanılabilir? –

+0

muhtemelen bir @PathParam seçeneğinden de bahsetmeli ... [bu yanıt] 'a bakın (https://stackoverflow.com/questions/21559260/how-do-i-pass-a-parameter-to-the-onopen- usul-ile-jee7-WebSockets) –