npm模块中的Socket.io

时间:2015-06-25 13:55:55

标签: node.js socket.io npm

我目前正在开发一个应该在更大的应用程序中使用的npm模块。我的模块需要收听一些socket.io事件,而且我不确定如何包含 socket.io

我可以看到两种解决方案:

  • 我在我的模块中包含socket.io,并配置我的所有事件监听。然后我导出它,以便主应用附加到其服务器

  • 或者,我让服务器配置所有内容,让它在调用我的模块时传递 socket.io模块,并配置我的事件监听应用程序给出的事件。 / p>

第一个解决方案的优点是不强制主应用程序在他们的依赖项中包含socket.io,如果他们不需要的话。

第二个解决方案强制主应用程序在其依赖项中包含socket.io,但似乎是此方法的最佳解决方案。

您如何看待这个?我应该在我的模块中包含socket.io,只需让主应用程序将它附加到服务器,或者我应该让主应用程序让我访问它的socket.io模块?

1 个答案:

答案 0 :(得分:0)

我认为执行此操作的常用方法是让调用模块的人注入服务器对象。所以你的模块调用如下:

require('myapp')(server);

然后,在您的应用中,您可以将socket.io附加到服务器。

var io = require('socket.io')(server);

此外,您可以使用可选的options参数,您可以直接将其传递给socket.io。

require('myapp')(server,options);

这有几个优点。 0配置,不要求用户要求socket.io,易于测试,如果需要可以进行配置。