Javascript WebSocket.ws.onmessage中未捕获的类型错误

Javascript WebSocket.ws.onmessage中未捕获的类型错误,javascript,websocket,Javascript,Websocket,我是web套接字的新手,我正在尝试下面的代码来让我的脚湿透 var id=0; var symbol=""; var interval=""; var open_time=0; var open=0; var high=0; var low=0; var close=0; var ws = new WebSocket('wss://stream.bybit.com/realtime'); ws.onopen = function(){ //console.log("S

我是web套接字的新手,我正在尝试下面的代码来让我的脚湿透

var id=0; 
var symbol=""; 
var interval=""; 
var open_time=0; 
var open=0; 
var high=0; 
var low=0; 
var close=0; 

var ws = new WebSocket('wss://stream.bybit.com/realtime');

ws.onopen = function(){
    //console.log("Socket has been opened!");
    ws.send('{"op":"subscribe","args":["kline.BTCUSD.1m"]}');
}

ws.onmessage = function(msg){
    //console.log(msg.data);        

    var obj = JSON.parse(msg.data);
    //console.log(obj.data);

    id = obj.data.id;
    symbol = obj.data.symbol;
    interval = obj.data.interval;
    open_time = new Date(obj.data.open_time * 1000);
    open = obj.data.open;
    high = obj.data.high;
    low = obj.data.low;
    close = obj.data.close;

}
虽然上面的代码工作正常,但我仍然无法在下面的控制台日志中找出错误:

main.js:28 Uncaught TypeError: Cannot read property 'id' of undefined
    at WebSocket.ws.onmessage (main.js:28)

我希望有人能告诉我为什么onmessage函数在第一次迭代时无法读取undefined的属性id,但在后续循环中读取它却没有问题。

您在这个语句id=obj.data.id

在这里,您试图访问数据的id属性。但是数据是未定义的,这就是错误的原因

您正在从msg获取数据,msg是通过套接字连接发送的。确保第一次发送的消息值正确

这就是那个错误的解释。如果您可以在向该函数发送数据的地方发布代码,我们可以找到如何修复该错误

编辑:

看起来您正在从其他第三方服务器接收数据。如果您可以运行下面的代码,您可以看到收到的第一条消息

第一条信息:

正如您所看到的,第一条消息没有数据属性。当你试图访问它时,你会得到这个错误

数据属性从第二条消息开始就存在,所以在后续消息中不会出现任何错误

第二条信息:

演示:

var ws=新WebSocket'wss://stream.bybit.com/realtime'; ws.onopen=函数{ //console.logSocket已打开!; 发送{op:subscribe,args:[kline.BTCUSD.1m]}; } 消息=[]; ws.onmessage=functionmsg{ messages.pushmsg.data; console.logmessages[0];
}谢谢@Nikhil,我正在使用jquery将这些数据发送到一个页面,比如so$'.id'.textid@阿纳格南-查看我编辑的答案。如果您有任何问题,请告诉我。我想我只需要将其包装在一个条件语句中,以避免出错。这是正确的@anagnam。在对数据执行任何操作之前,可以使用条件语句检查数据是否存在。另外,第一条消息看起来像是一条确认消息,你可以放心地忽略它。谢谢你,尼希尔,我想我可以从这里选择它。再次感谢你的提醒。
{"success":true,"ret_msg":"","conn_id":"b75dcae2-48e6-4283-8922-3799a199d8c8",
"request":{"op":"subscribe","args":["kline.BTCUSD.1m"]}}
{ "topic":"kline.BTCUSD.1m",
   "data":{
      "id":0,"symbol":"BTCUSD", "open_time":1567828500,"open":10349,
      "high":10349.5,"low":10349,"close":10349.5,"volume":420020,
      "turnover":40.58444293000001,"interval":"1m"
    }
}