Я пишу WebSocket связь с client
и server
конечных точек как в Java коде (с помощью кота 7.0.53 в качестве веб-сервера) Когда я отправить текстовое сообщение, используя session.getbasicremote.sendText(String)
метод @Onmessage
функция увольняется и все. Однако я хочу отправить двоичные данные между веб-сайтами, чтобы, таким образом, использовать session.getbasicremote.sendBinary(ByteBuffer)
. Код должен быть считано в пределах следующего метода,WebSocket @OnMessage никогда не стреляя для двоичных сообщений только текст
@OnMessage
public void recieved(ByteBuffer byteBuffer)
{
System.out.println(byteBuffer);
}
Однако метод никогда не вызывается, когда посылается сообщение (я отлажена через оба удаленных отладочные и печати, чтобы убедиться, что двоичные данные направляются также да регулярный текст отправляется через этот метод, когда binary
переключается на text
). Кто-нибудь знает, почему этот метод никогда не вызывается, когда данные отправляются с другого конца websocket? Вот также код для части, где двоичные данные отправляются через websocket. Также методы @onError
находятся в классах и никогда не называются.
public void SendMessage() throws IOException
{
for(int i = 0;i<MESSAGE_SIZE;i++)
message+='\0';
for(int i = 0;i<ID_SIZE;i++)
id+='\0';
ByteBuffer bbuf = ByteBuffer.allocate(1000);
bbuf.put(id.getBytes());
bbuf.position(33);
bbuf.putInt(33,length);
bbuf.position(37);
bbuf.put(message.getBytes());
for(Session session : sessionList)
session.getAsyncRemote().sendBinary(bbuf);
System.out.println("sent");
}
Я отправляю arrayBuffer как 'var img = context.getImageData (0, 0, canvas.width, canvas.height); var binary = new Uint8Array (img.data.length); для (var i = 0; i