我有一个Java websocket,它不断发送一堆我想要从js客户端持续拦截的坐标。这是java代码的简化版本:
public static void main(String args[]) throws IOException {
final int portNumber = 2500;
System.out.println("Creating server socket on port " + portNumber);
ServerSocket serverSocket = new ServerSocket(portNumber);
while (true) {
Socket socket = serverSocket.accept();
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os, true);
pw.println("test");
pw.println("\r");
}
//later on close connection
pw.close();
socket.close();
}
至于我的js代码,它的外观如下:
var connection;
try{
connection = new MozWebSocket('ws://localhost:2500/');
}catch(e){
connection = new WebSocket('ws://localhost:2500/');
}
connection.onopen = function () {console.log('opened');};
connection.onclose = function(evt) { console.log("closed"); };
connection.onmessage = function(evt) { console.log("message"); };
connection.onerror = function(evt) { console.log(evt); };
运行此操作后,我得到类似" WebSocket握手期间的错误:状态行中找不到响应代码"我理解这是一个从javascript客户端克服的难题。 因此,我想知道是否应该重新安排我实现websocket的方式,还是应该改为使用websocket服务器?但我不确定它是否仍然允许我不断读取我的套接字将在任何时候播放的数据。 提前谢谢。
答案 0 :(得分:1)
你意识到websockets是一个协议吗?它不只是发送明文。
我创建了一个名为Bowser的开源java webserver,它支持websockets。您可以在这里查看一些代码以获取灵感,或者只使用库:https://github.com/mirraj2/Bowser/tree/master/src/bowser/websocket
要启动websocket服务器,它就像:
一样简单int port = 12345;
new WebSocketServer(port).onOpen(socket->{
System.out.println("Client connected: " + socket);
}).start();