【问题标题】:Websocket only sends onopen (Javascript in HTML)Websocket 仅发送 onopen(HTML 中的 Javascript)
【发布时间】:2023-04-04 20:06:02
【问题描述】:

Websocket 仅在调用 onopen 时才发送消息,而在其他地方则不发送。服务器只是发回添加了 Hello 的消息。

客户端:

    <!DOCTYPE html>
<html>
    <body>
        <button onclick="transmit()">send</button>
        <h3 id="text"></h3>
    </body>
    <script>
            const url = "ws://localhost:8765"
            const ws = new WebSocket(url)
            var i = 0;

            ws.onopen = function (event) {
                ws.send('On');
            }

            ws.onmessage = function (event){
                ws.send("This will cause a feedback loop but idc at this point");
                var text = document.getElementById("text");
                text.innerHTML = evt.data;
            }

            ws.send("pain");
                
    </script>
</html> 

我可能在做一些愚蠢的事情。

【问题讨论】:

    标签: javascript html websocket


    【解决方案1】:

    Websockets 在没有活动时自动关闭,之后所有发送都被忽略。防止它在这里关闭是一种方法。

    ws.onopen = function (event) {
      ws.send('On');
    
      return false; // keeps the socket open.
    }
    
    //or 
    ws.onmessage = function (event){
       ws.send("This will cause a feedback loop but idc at this point");
       var text = document.getElementById("text");
       text.innerHTML = evt.data;
    
       return false; // keeps the socket open.
    }
    

    【讨论】:

    • 感谢您的回复! onopen 后它仍然不发送。
    • 实际上你也可以返回 false ,只是为了让它保持打开状态。查看修改。
    • 由于某种原因仍然无法正常工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多