Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript WebSocket/ws类型错误_Javascript_Node.js_Websocket - Fatal编程技术网

Javascript WebSocket/ws类型错误

Javascript WebSocket/ws类型错误,javascript,node.js,websocket,Javascript,Node.js,Websocket,我从以下位置收到一个错误: 这并不是指我的代码中的任何特定行,所以我甚至不知道代码中的什么地方导致了这一点 这是模块新更新的错误还是我做错了什么 我已经有一段时间没有更新websocket客户端了(这就是错误的来源) 编辑 websocket用于两个不同的位置: // main file that then passes socket to libdiag.js socket.on('connect', function () { socket.emit('authenticate',

我从以下位置收到一个错误:

这并不是指我的代码中的任何特定行,所以我甚至不知道代码中的什么地方导致了这一点

这是模块新更新的错误还是我做错了什么

我已经有一段时间没有更新websocket客户端了(这就是错误的来源)

编辑

websocket用于两个不同的位置:

// main file that then passes socket to libdiag.js
socket.on('connect', function () {
    socket.emit('authenticate', {
        method: 'token',
        credentials: token
    });
});

socket.on('authenticate', function(packet) {
    var data = JSON.parse(packet.data);
    if (packet.channel == CHANNEL && data.status == "authenticated") {
        libdiag.start(socket, CHANNEL);
    }
});

socket.on('disconnect', function () {
    start();
});

socket.on('error', function (err) {
    libdiag.error(err); // This is just a logger that writes to file
});
这个文件呢

// This is libdiag.js
socket.on('data', function (packet) {
    var data = JSON.parse(packet.data);

    // New listener is requesting handshake
    if (packet.type == SOCKET_HANDSHAKE) {
        _handshake(data);
    }

    // A listener has left
    if (packet.type == SOCKET_CLOSED) {
        _listenerLeft(data);
    }

    if (packet.type == SOCKET_UPDATE) {
        _read(data);
    }
});

socket.on('disconnect', function () {
    libdiag.destroy(); // This calls socket.disconnect() and sets the variables to null
});

我相信您正在尝试将a绑定到某个WebSocket回调,DOM级别2事件的
目标
属性设置为
只读

// Introduced in DOM Level 2:
interface Event {

  // PhaseType
  const unsigned short      CAPTURING_PHASE                = 1;
  const unsigned short      AT_TARGET                      = 2;
  const unsigned short      BUBBLING_PHASE                 = 3;

  readonly attribute DOMString        type;
  readonly attribute EventTarget      target;
  readonly attribute EventTarget      currentTarget;
  readonly attribute unsigned short   eventPhase;
  readonly attribute boolean          bubbles;
  readonly attribute boolean          cancelable;
  readonly attribute DOMTimeStamp     timeStamp;
  void               stopPropagation();
  void               preventDefault();
  void               initEvent(in DOMString eventTypeArg, 
                               in boolean canBubbleArg, 
                               in boolean cancelableArg);
};
在您的流中,似乎有什么东西触发了的
onError
处理程序,它试图更改
事件。target

function onError (event) {
    event.type = 'error';
    event.target = target;
    listener.call(target, event);
}

我相信这是您在控制台中看到的错误的根本原因。如果您向我们展示关于您正在绑定或与websocket一起使用的事件/回调/处理程序的代码,以确定不使用DOM Level 2事件的方法,这将非常有用。

我更新了我的答案。我的错误处理只是将内容写入文件。我不做任何花哨的事!您会考虑临时修改WebSosiver库、OnError方法、添加控制台、日志(事件)吗?在它的开头,并粘贴到你的问题?它可能会让你了解错误的来源。这就是你在控制台上看到的?是的。所以我跟踪了错误,它来自函数
Receiver.prototype.processPacket
Receiver是您的依赖项吗?当然可以,你能显示代码吗?
function onError (event) {
    event.type = 'error';
    event.target = target;
    listener.call(target, event);
}