Play Framework 2.1 websockets流数据不起作用

时间:2013-04-12 22:21:00

标签: java websocket playframework-2.0

我在Play应用程序中设置了websocket连接。该功能如下,我正在尝试在此功能中传输一些数据。

当websocket连接设置好并准备就绪时,我创建一个while循环,创建随机数,发送到websocket的前端到前端。

我测试过这些是我观察过的事情:

  1. 如果我注释掉while循环代码并且只有前三个out.write(...),那么它们都会按预期到达前端。
  2. 如果我取消注释while循环代码,前端不会收到任何消息。如果对out.write(...)循环进行评论,那么前三个while就不会出现。
  3. 这让我感到有些困惑。如果前三条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());
                    }
                }
            }
        };
    }
    

1 个答案:

答案 0 :(得分:0)

我对游戏或scala没有任何了解,但据我所知你阻止了一个执行线程。