我正在为通讯应用程序设置第一个WebSocket服务器。 我似乎无法弄清楚Java中的WebSocket是如何实现的。
我尝试过使用基于注释的Endpoint进行创建,但并没有成功。我不确定客户端信息将通过哪里传递。这基本上就是我的代码要点,没有涉及到令人沉闷的细节。
我正在尝试让MessageHelper类处理WebSocket信息传输,但我不知道该如何实际传输数据。
class MainServer implements Runnable {
// VARIABLES
ServerSocket serverSocket = null;
int port;
// CONSTRUCTORS
MainServer(int p) {
this.port = p;
}
// METHODS
public void run() {
openServerSocket();
while(!isStopped()){
try{
clientSocket = serverSocket.accept();
} catch(IOException e) {
// Do something
}
new Thread(new MainThread(clientSocket)).start();
}
}
}
// Other methods below.
public class MainThread {
final Socket socket;
MainThread(Socket s) {
this.socket = s;
}
public void run() {
try{
BufferedReader br = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
String input = br.readLine(), read = br.readLine();
while(!input.isEmpty()) {
read += "\n";
read += input;
input = br.readLine();
}
/**
* Everything works fine, I'm just not sure where to go
* from here. I tried creating MessageHelper into the java
* websocket implementation using annotations but it did not
* accept input from the client after the handshake was
* made. My client would send something but it would just
* give and EOFException.
**/
if(websocketHandshakeRequest(read)) {
MessageHelper messageHelper =
new MessageHelper(this.socket);
} else {
// Do something
}
} catch(Exception e) {
// Do something.
}
}
}
ServerSocket
构建了一个WebSocket服务器来监听端口,使用Socket
处理WebSocket协议。到目前为止,一切都很好,从客户端到服务器解码消息并回复的时间为4-12毫秒,支持Ping/Pong帧和Close帧,也许还有其他部分我没有涉及。我本来不是计算机科学专业的,所以在TCP和UDP方面缺乏知识,你的意思是WebSocket在“握手”之后不运行在TCP上,因此ServerSocket
不是正确的类吗? - Jason Rich Darmawan