问题描述
在我的项目中,我有一些套接字需要进行身份验证,而有些套接字不包含auth-token。
const socket = require('socket.io');
let server = require('http').createServer(app);
require('./config/authSockets')(socket(server));
require('./config/sockets')(socket(server));
我为此场景创建了单独的文件,该文件在authSockets中,首先应检查socket是否具有令牌,然后它将仅打开连接并发出那些套接字。下一个文件是./config/sockets,此文件应每次都运行,并且不需要套接字。但是我的代码无法正常工作,它始终只接受第二个文件。
解决方法
我建议您使用socket.io命名空间,并且要求对其中一个命名空间而不是其他命名空间进行身份验证。这两个名称空间都由同一个socket.io服务器提供服务,但是您可以不同地处理每个名称空间(其中一个需要auth,而另一个则不需要auth)。这是用于socket.io命名空间的完美应用程序(共享相同的socket.io服务器和客户端连接的两个不同目的)。
通过导入和导出正确的内容来完成socket.io在两个文件之间的工作。在此之前,我已经多次回答过类似的问题,但是要具体为您提供帮助,我必须查看您的实际代码(已粘贴到您的问题中),才能确切地了解建议的模块共享解决方案。