Tôi có một ứng dụng web đang tạo kết nối socket với máy chủ NodeJS được lưu trữ thông qua nút IIS. Kết nối dường như được thực hiện đúng cách khi tôi giải quyết lỗi phiếu thăm dò 404 trên máy khách mà ban đầu tôi có. Tuy nhiên, có vẻ như máy khách không nhận được sự kiện socket từ IIS Node.Máy khách không nhận sự kiện từ SocketIO qua Nút IIS
Lý thuyết của tôi là bởi vì nút IIS hoạt động như một proxy, sự kiện được gửi lại cho máy khách đang dừng ở đâu đó ở cấp Node 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);
}
Trong nút, sự kiện trên sẽ kích hoạt nhưng không nhận được tiền mặt.
Client trông như thế này:
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();
});
file web.config của tôi trông như thế này:
<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>
Chạy tất cả điều này trên máy tính địa phương của tôi làm việc đúng cách. Các sự kiện socket được gửi và nhận. Thêm nút IIS vào luồng công việc có vẻ là nơi nó ngừng hoạt động. Mọi sự trợ giúp sẽ rất được trân trọng.
Xem điều này có hữu ích không? https://github.com/tjanczuk/iisnode/issues/402, https://github.com/tjanczuk/iisnode/issues/268 và http://blog.novanet.no/scaling-concurrent-connections-with- node-js-and-socket-io-on-iis/ –
bạn có thể Thêm Server.js của bạn Với sự kiện socket.on Tôi chỉ thấy Socket.emit() event – muthukumar