Ich habe eine Webanwendung, die eine Socket-Verbindung mit einem NodeJS-Server herstellt, der über IIS-Knoten gehostet wird. Die Verbindung scheint ordnungsgemäß ausgeführt zu werden, als ich einen 404-Abfragefehler auf dem Client löste, den ich ursprünglich hatte. Jetzt sieht es jedoch so aus, als ob der Client keine Socket-Ereignisse vom IIS-Knoten empfängt.Client empfängt kein Ereignis von SocketIO über IIS Knoten
Meine Theorie ist, dass, weil IIS-Knoten wie ein Proxy agiert, das an den Client gesendete Ereignis irgendwo auf der IIS-Node-Ebene anhält.
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);
}
Im Knoten wird das obige Ereignis ausgelöst, es wird jedoch nicht am Frontend empfangen.
Der Kunde sieht wie folgt aus:
<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>
Laufen all dies auf meinem lokalen Rechner funktioniert:
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();
});
Meine web.config-Datei sieht wie folgt aus. Socket-Ereignisse werden gesendet und empfangen. Das Hinzufügen eines IIS-Knotens in den Workflow scheint dort zu sein, wo er nicht mehr funktioniert. Jede Hilfe würde sehr geschätzt werden.
Sehen Sie, ob das hilft? https://github.com/tjanczuk/iisnode/issues/402, https://github.com/tjanczuk/iisnode/issues/268 und http://blog.novanet.no/scaling-concurrent-connections-with- node-js-and-socket-io-on-iis/ –
können Sie bitte Ihre Server.js hinzufügen Mit socket.on Event Ich sehe nur Socket.emit() Ereignis – muthukumar