我已经打开了一个带有设备的Web套接字,但不得不采用非显而易见的方法来解析返回的消息。
为什么?
假设我的网络套接字名为'ws',我期待的其中一条消息的数据值为'wibble'。我从这些功能相同的处理程序中获得了不同的行为。
此版本按预期工作。
ws.onmessage = function (msg) {
var cmd = msg.data;
if (cmd.indexOf('wibble') === 0) {
console.log ('ws: wibble');
} else {
console.log ('ws unknown: ' + cmd);
}
}
// logs ws: wibble
这个没有:
ws.onmessage = function (msg) {
var cmd = msg.data;
if (cmd == 'wibble') { // cmd === 'wibble' behaves same
console.log ('ws: wibble');
} else {
console.log ('ws unknown: ' + cmd);
}
}
// logs ws unknown: wibble
我怀疑我需要通过ArrayBuffer将msg.data转换为字符串,但Safari 9.1不支持ArrayBuffer.from(),我无法找到比IndexOf方法更干净的东西。
谢谢!