我在Play应用程序中设置了websocket连接。该功能如下,我正在尝试在此功能中传输一些数据。
当websocket连接设置好并准备就绪时,我创建一个while
循环,创建随机数,发送到websocket的前端到前端。
我测试过这些是我观察过的事情:
while
循环代码并且只有前三个out.write(...)
,那么它们都会按预期到达前端。while
循环代码,前端不会收到任何消息。如果对out.write(...)
循环进行评论,那么前三个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());
}
}
}
};
}
答案 0 :(得分:0)
我对游戏或scala没有任何了解,但据我所知你阻止了一个执行线程。