【发布时间】:2018-03-23 07:51:26
【问题描述】:
我有一个 Web 应用程序正在与通过 IIS 节点托管的 NodeJS 服务器建立套接字连接。当我解决了我最初拥有的客户端上的 404 轮询错误时,连接似乎已正确建立。但是现在,客户端似乎没有从 IIS 节点接收套接字事件。
我的理论是,由于 IIS 节点的行为类似于代理,因此发送回客户端的事件在 IIS 节点级别的某处停止。
exports.register = function(socket) {
User.schema.post('save', function (doc) {
console.log("Save socket");
onSave(socket, doc);
});
}
function onSave(socket, doc, cb) {
socket.emit('User List Update', doc);
}
在Node中,上面的事件触发了,但是前端没有收到。
客户端如下所示:
var socket = io.connect("http://myinternallyhostedserver:7777/reception");
socket.on('User List Update', function () {
console.log('Received socket event!');
if (vm.enableAlert) {
vm.alertSound.play();
}
vm.getUsers();
});
我的 web.config 文件如下所示:
<configuration>
<appSettings>
<add key="virtualDirPath" value="/reception" />
</appSettings>
<system.webServer>
<handlers>
<add name="iisnode" path="server/app.js" verb="*" modules="iisnode" />
</handlers>
<iisnode enableXFF="true" />
<webSocket enabled="false"/>
<rewrite>
<rules>
<rule name="reception">
<match url="/*" />
<action type="Rewrite" url="server/app.js" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
在我的本地机器上运行所有这些工作正常。套接字事件被发送和接收。将 IIS 节点添加到工作流中似乎是它停止工作的地方。任何帮助将不胜感激。
【问题讨论】:
-
你能用 socket.on 事件添加你的 Server.js 我只看到 Socket.emit () 事件
标签: node.js express iis socket.io iisnode