Java Play Framework 2.1 websockets流媒体数据不工作
我在Play应用程序中设置了websocket连接。下面是函数,我试图在这个函数中流式传输一些数据 当websocket连接设置好并准备就绪时,我创建了一个Java Play Framework 2.1 websockets流媒体数据不工作,java,websocket,playframework-2.0,Java,Websocket,Playframework 2.0,我在Play应用程序中设置了websocket连接。下面是函数,我试图在这个函数中流式传输一些数据 当websocket连接设置好并准备就绪时,我创建了一个while循环,该循环创建随机数,将其发送到websocket的输出流中,并发送到前端 以下是我在测试时观察到的情况: 如果我在循环代码时注释掉,并且只注释掉前三个 如果在循环代码时取消注释,前端将不会收到任何消息。甚至前三个都没有输出。如果while循环被注释,则写入(…) 这让我有点困惑。如果前三条out.write(…)消息熄灭,为什么
while
循环,该循环创建随机数,将其发送到websocket的输出流中,并发送到前端
以下是我在测试时观察到的情况:
,并且只注释掉前三个
,前端将不会收到任何消息。甚至前三个都没有输出。如果while
循环被注释,则写入(…)
李>
这让我有点困惑。如果前三条out.write(…)
消息熄灭,为什么它们和while
循环out.write(…)
在while
循环未注释时不熄灭
循环通过print语句验证运行,但前端没有收到任何消息。我们不能在websocket的循环中调用'out.write(…)'吗
public static WebSocket<String> realTimeChartConnection() {
return new WebSocket<String>() {
// called when the websocket is established
public void onReady(WebSocket.In<String> in, WebSocket.Out<String> out) {
// register a callback for processing instream events
in.onMessage(new Callback<String>() {
public void invoke(String event) {
System.out.println(event);
}
});
System.out.println("Websocket Connection ready ...");
out.write("50");
out.write("51");
out.write("60");
int prev = 50;
while (true) {
int y = (int) (prev + Math.random() * 10 - 5);
if (y < 0)
y = 0;
if (y > 100)
y = 100;
out.write(""+y);
try {
Thread.currentThread();
Thread.sleep(30);
} catch (Exception e) {
System.out.println(e.getStackTrace());
}
}
}
};
}
公共静态WebSocket realTimeChartConnection(){
返回新的WebSocket(){
//在建立websocket时调用
public void onReady(WebSocket.In,WebSocket.Out){
//注册用于处理流内事件的回调
in.onMessage(新回调(){
公共void调用(字符串事件){
系统输出打印项次(事件);
}
});
System.out.println(“Websocket连接就绪…”);
填写(“50”);
填写(“51”);
填写(“60”);
int prev=50;
while(true){
int y=(int)(prev+Math.random()*10-5);
if(y<0)
y=0;
如果(y>100)
y=100;
out.写出(“+y”);
试一试{
Thread.currentThread();
睡眠(30);
}捕获(例外e){
System.out.println(e.getStackTrace());
}
}
}
};
}
我对play或scala没有任何了解,但据我所知,您阻止了执行线程