【发布时间】:2014-11-18 18:31:52
【问题描述】:
我正在用 java 代码编写与client 和server 端点的websocket 通信(使用tomcat 7.0.53 作为Web 服务器)当我使用session.getbasicremote.sendText(String) 方法发送短信时@Onmessage函数被触发和一切。但是我想在 websockets 之间发送二进制数据,因此必须使用session.getbasicremote.sendBinary(ByteBuffer)。然后应该在以下方法中读取代码,
@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");
}
【问题讨论】:
标签: java tomcat websocket tomcat7 bytebuffer