gpt4 book ai didi

javascript - 在 node.js/socket.io 中,如何判断一个对象是否是一个套接字实例?

转载 作者:行者123 更新时间:2023-11-30 05:56:10 25 4
gpt4 key购买 nike

在我的应用程序中,socket 使用 bindcall 作为 this 传递

socket.on( 'handle', someFunc.bind(socket) );

function someFunc() {
var socket = this;
...
anotherFunc.call( socket, 'abc', ... );
}

我希望确保 this 确实是一个 socket - 忘记了 - 使用 func(...) 而不是 func .call(socket,...).

function someFunc() {
var socket = this;
assert.ok( /* ensure this is instanceof a socket */ );
...
}

我如何做出断言?

io = require('socket.io') 中是否有一些我可以使用的 socket

最佳答案

要解决所讨论的具体问题,最好检查 this 是否不为 null:

function someFunc() {
var socket = this;
assert.ok(socket);
...
}

someFunc(); 调用断言会失败,并且只会通过 someFunc.bind(socket)();someFunc.call( socket); 调用(只要 socket 不为空)。

如 Bergi 所建议的那样,如果下一个 Node.js 版本具有不同的实现,那么依赖于实现细节将使您的应用程序无法使用;而且它似乎不是公共(public) API 的一部分。

关于javascript - 在 node.js/socket.io 中,如何判断一个对象是否是一个套接字实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11789462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com