You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在HTML页面展示经过过滤的WebSocket数据?

如何在HTML页面展示经过过滤的WebSocket数据?

看起来你已经走对了大部分路,但可能有几个小细节卡壳了!我来帮你排查下问题,顺便给你调整下代码:

首先,你的核心思路是完全正确的:建立WebSocket连接、监听消息、过滤后插入页面,但可能忽略了几个容易踩的坑:

可能的问题点

  1. 数据格式不符合预期:你默认收到的是纯字符串,但有些WebSocket服务会把消息封装成JSON对象,这时候直接用startsWith肯定匹配不上。
  2. 隐藏的空白字符:收到的消息开头可能有空格、换行符之类的空白,导致'S,'开头的判断失效。
  3. 缺少错误/连接状态反馈:之前的代码没加连接成功、错误的监听,哪怕连接出问题你也不知道,只能瞎猜。
  4. 浏览器兼容性:startsWith是ES6语法,虽然现在大部分浏览器支持,但旧浏览器可能不兼容,换用indexOf会更稳妥。

调整后的代码

我给你加了状态监听、数据调试输出,还优化了过滤逻辑:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

<script>
$(document).ready(function() {
    const socket = new WebSocket('wss://proxy.livemadisonalerts.com/');

    // 监听连接成功,给你明确的反馈
    socket.onopen = function() {
        console.log('WebSocket连接成功啦!');
        $('#output').append('<p>✅ WebSocket已连接,等待数据...</p>');
    };

    // 监听错误,再也不用瞎猜哪里出问题
    socket.onerror = function(error) {
        console.error('WebSocket出错:', error);
        $('#output').append('<p>❌ WebSocket连接出错:' + (error.message || '未知错误') + '</p>');
    };

    // 监听连接关闭,及时知道状态变化
    socket.onclose = function(event) {
        console.log('WebSocket连接关闭:', event);
        $('#output').append('<p>🔌 WebSocket连接已关闭</p>');
    };

    socket.onmessage = function(event) {
        let data = event.data;
        // 先把原始数据打在控制台,你可以F12打开Console标签看收到的到底是什么
        console.log('收到原始数据:', data);

        // 去掉首尾的空白字符,避免空格干扰判断
        data = data.trim();

        // 用indexOf判断开头,兼容更多浏览器
        if (data.indexOf('S,') === 0) {
            $('#output').append('<p>' + data + '</p>');
        }

        // 额外提示:如果收到的是JSON格式,要先解析,比如下面这样(解开注释就能用)
        // try {
        //     const parsedData = JSON.parse(data);
        //     // 假设消息内容存在parsedData的某个字段里,比如parsedData.content
        //     if (parsedData.content && parsedData.content.indexOf('S,') === 0) {
        //         $('#output').append('<p>' + parsedData.content + '</p>');
        //     }
        // } catch (e) {
        //     // 不是JSON格式,就用之前的字符串逻辑处理
        // }
    };
});
</script>

<div id="output">TEST OUTPUT</div>

排查小技巧

打开浏览器的开发者工具(按F12),切换到Console标签:

  • 先看有没有WebSocket连接成功啦!的日志,确认连接没问题
  • 再看收到原始数据:后面的内容,看看是不是真的有以S,开头的消息
  • 如果收到的是JSON字符串,就用上面注释里的解析代码来处理

这样调整后,你应该能看到过滤后的内容正常显示在页面上了!

备注:内容来源于stack exchange,提问作者mnbadger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 18:14:51