我想写一个WebSocket服务器,使用Java和C++两种语言,但目前遇到了困难。在Java中,我使用java.net.ServerSocket / java.net.Socket建立连接,并成功完成握手,但是WebSocket发送到Java服务器的数据并不完全符合我的期望。
当我像这样从JavaScript发送消息时:
Java服务器接收到这个信息,每隔一段时间会有换行符,但并不是每次调用websocket.send()都会有换行符。
Java服务器使用BufferedReader.readLine()从套接字中检索值。
这对于握手来说很好用,所有握手数据都是可读的,但在握手完成后它不起作用。
握手后的数据是否以某种方式加密?我该如何阅读它?
编辑:
程序文件: SocketConnectTest.html ServerTest.java ClientSessionTest.java ResponseGenerator.java output 只需运行ServerTest.java,然后打开SocketConnectTest.html。 ClientSessionTest.initClientListener()处理来自客户端的消息。 解决方案:请参见下面pimvdbs的帖子以及他在如何在WebSockets hybi 08+中(de)构建数据框架?中的答案。
当我像这样从JavaScript发送消息时:
var count = 0;
function loop(){
websocket.send("loop: " + count + "\n");
count++;
setTimeout(loop, 100);
}
Java服务器接收到这个信息,每隔一段时间会有换行符,但并不是每次调用websocket.send()都会有换行符。
Java服务器使用BufferedReader.readLine()从套接字中检索值。
BufferedReader socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line =socketReader.readLine();
这对于握手来说很好用,所有握手数据都是可读的,但在握手完成后它不起作用。
握手后的数据是否以某种方式加密?我该如何阅读它?
编辑:
程序文件: SocketConnectTest.html ServerTest.java ClientSessionTest.java ResponseGenerator.java output 只需运行ServerTest.java,然后打开SocketConnectTest.html。 ClientSessionTest.initClientListener()处理来自客户端的消息。 解决方案:请参见下面pimvdbs的帖子以及他在如何在WebSockets hybi 08+中(de)构建数据框架?中的答案。
accept-encoding
头信息中包括gzip
吗?如果是,请移除它并重试。 - trojanfoe