为什么我不能将Web套接字消息数据与字符串文字进行比较?

时间:2016-05-09 21:33:25

标签: javascript websocket string-literals arraybuffer

我已经打开了一个带有设备的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方法更干净的东西。

谢谢!

0 个答案:

没有答案