2016-04-01 24 views
0

Amaç: Zaten mina 2.0.13 + WebSocket + buffer.capacity

Ben web üzerinden json mesaj göndermek için kullanılan tampon sorunu .. yamalı mina web soketi ( https://issues.apache.org/jira/browse/DIRMINA-907) verileri gönderiyorum 50 baytlık bir yuvaya ... bazen, 70 bayta kadar yükselir ...

Sorun şu: başlangıçta, IOBuffer.capacity() is 2048 -> 2048 -> 1024 -> 1024 -> 512 -> 64

json mesajı 70 bayt hale gelirse -> 512 -> 256 -> 256 -> 128 -> 128 -> 64 -> 64 -> 64. MessageReceived (IoSession oturumu, Nesne mesajı) içinde iki mesaja ayrılacaktır. Bu sorunu çözebileceğim bir yol var mı?

Ben tamamlanmamış mesaj saklayabilir, ama böyle 2 json mesajlar veya 1 geçersiz json mesajla 1 geçerli json mesajı olarak başka bir konuyu gündeme olacaktır.

Teşekkürler.

cevap

0

MINA ile TCP kullandığınızı kabul ediyorum. TCP üzerinden büyük bir mesaj gönderildiğinde, daha küçük paketlere sığacak şekilde daha küçük parçalara bölünür. TCP, paket verilerinin varış noktasına ulaştığında doğru sırada gelmesini sağlar. Ne oluyor

JSON mesajı ağ üzerinden gönderilen olurken bölünmüş alır olmasıdır. Her ne kadar hedefe ulaşsa da, iki parçayı bir araya getirmeniz gerekir.

MINA kullanıcı kılavuzu bunu nasıl, o sana yardım etmelidir iyi bir örnek vardır. Bunu Nihayet here

0

i

acceptor.getSessionConfig() ekleyerek çözmek bulabilirsiniz setMinReadBufferSize (2048).; Kodumun içine

.

Set mesajı önlemek için asgari okunan tampon 2 parçaya ayrılır .. Ben bir kaymakam çözüm olmadığını biliyoruz. ama mesajım 2K'dan büyük olmayacak.

jython234 önerilen çözüm benim ihtiyacı için uygun değildir.