如何在HTML页面展示经过过滤的WebSocket数据?
如何在HTML页面展示经过过滤的WebSocket数据?
看起来你已经走对了大部分路,但可能有几个小细节卡壳了!我来帮你排查下问题,顺便给你调整下代码:
首先,你的核心思路是完全正确的:建立WebSocket连接、监听消息、过滤后插入页面,但可能忽略了几个容易踩的坑:
可能的问题点
- 数据格式不符合预期:你默认收到的是纯字符串,但有些WebSocket服务会把消息封装成JSON对象,这时候直接用
startsWith肯定匹配不上。 - 隐藏的空白字符:收到的消息开头可能有空格、换行符之类的空白,导致
'S,'开头的判断失效。 - 缺少错误/连接状态反馈:之前的代码没加连接成功、错误的监听,哪怕连接出问题你也不知道,只能瞎猜。
- 浏览器兼容性:
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
相关产品推荐
相关产品推荐

