javascript - 在 socket.io 中向套接字添加功能的首选方法是什么?

标签 javascript node.js sockets socket.io

是否存在连接到 socket.io 的所有套接字的“原型(prototype)”?

我想定义一些可用于每个连接的套接字的函数。

目前我有:

io.sockets.on('connection', function(socket) {
  //Define properties and functions for socket
  socket.hello = function(){
    console.log("hello from "+socket.id);
  }

  socket.hello();
});

但是我正在为每个套接字定义一个“新的”hello 函数。有套接字原型(prototype)吗?所以我可以有类似的东西:

Socket.prototype.hello = function(){
  console.log("hello from "+socket.id);
}

io.sockets.on('connection', function(socket) {
  socket.hello();
});

最佳答案

虽然它似乎无法通过主 require('socket.io') 获得。

目前,您必须require() socket.js直接引用它:

var Socket = require('socket.io/lib/socket');

Socket.prototype.hello = function () {
    console.log("hello from " + this.id);
};

Note: From the prototype, you'll have to reference the instance as this. A socket variable won't already be available.

Also, like the recommendations against modifying native types, like Object's prototype -- there's only one Socket.prototype, so it's possible to run into collisions of multiple modules trying to define the same method.

关于javascript - 在 socket.io 中向套接字添加功能的首选方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30110578/

相关文章:

javascript - 如何通过索引分配 Javascript 数组

javascript - MDC Tabs Javascript 以可重复使用的方式

node.js - Node :/lib64/libc. so.6:找不到版本 `GLIBC_2.9'( Node 需要)

Java 客户端/服务器 SSL 套接字聊天

c - Сan 我通过套接字收到文件后立即退出 С

javascript - 是否可以将映射集合名称的名称作为 MongoDB 映射函数中键的一部分包含在内?

javascript - 有没有办法通过使用 Netsuite 2.0 编写脚本来禁用事务列?

node.js - app.all ('*' ) 和 app.use ('/' ) 之间的区别

angularjs - 如何将现有的 AngularJS 2 网络应用程序转换为 Cordova 应用程序?

c++ - Socket编程, "CLOSE_WAIT"、 "FIN_WAIT_2"和 "LISTENING"呢?