Java 및 C++ 모두에서 WebSocket Server를 작성하려고하지만 현재 당황했습니다. java 및 java.net.ServerSocket/java.net.Socket을 사용하여 연결을 성공적으로 관리했지만 핸드 셰이크를 성공적으로 수행했지만 WebSocket에서 Java Server로 전송 한 데이터는 예상 한 것이 아닙니다.WebSocket 서버 작성
하는 것은 다음과 같은 자바 스크립트에서 메시지를 보낼 때 :
var count = 0;
function loop(){
websocket.send("loop: " + count + "\n");
count++;
setTimeout(loop, 100);
}
자바 서버가이를 수신 라인은 호출 된 모든 websocket.send() 지금하고 있지만 모든를 공급한다.
? ‡ ½ ÷ "~Ñ~Mè ‡ ×? ‡ AI3-¡C {에서? ‡ OEI [UA ¢ 4 % ¶íi? ‡ $ ÍåøH ¢ 그런가? ‡ · † ÞžÛé ± î? |ê? ‡ '½Ø ... KÒ Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â 5 : J FV %의 F6 키
자바 서버는 BufferedReader.readLine를 사용하여 소켓()에서 값을 검색
BufferedReader socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line =socketReader.readLine();
이것은 악수 잘 작동하고 모든 핸드 쉐이크 데이터를 읽을 수 있지만,이 후 작동하지 않습니다 핸드 셰이크는
핸드 셰이크 이후의 데이터는 어떻게 든 암호화됩니까? 어떻게 읽을 수 있습니까?
편집 :
프로그램 파일 :
SocketConnectTest.html
ServerTest.java
ClientSessionTest.java
ResponseGenerator.java
output
그냥 S를 실행 erverTest.java를 열고 SocketConnectTest.html을 엽니 다.
ClientSessionTest.initClientListener()는 클라이언트의 메시지를 처리합니다.
해결
: 솔루션에 대한 는 pimvdbs 아래 게시 How to (de)construct data frames in WebSockets hybi 08+?
서버에 텔넷을 사용해 볼 수 있습니까? 이렇게하면 일반 텍스트를 입력하고 전송되는 내용과 회신 메시지를 볼 수 있습니다 (HTTP 서버에서도이 작업을 수행 할 수 있습니다). –
압축 될 수 있습니다. 'accept-encoding' 헤더는'gzip'을 포함합니까? 그렇다면 그것을 제거하고 다시 시도하십시오. – trojanfoe
@trojanfoe 나는 gzip을 제거하려고 시도했고 또한 ID로 교체하려고 시도했다. 둘 다 도왔다. – Markus