У меня есть сервер Windows, на котором запущены IIS и node.js с socket.io для приложения интерактивной доски, которое я разрабатываю. Я хочу, чтобы и веб-сайт IIS, и сервер node.js прослушивали порт 80, но были связаны с разными IP-адресами.привязка socket.io к определенному IP-адресу
Из того, что я могу найти, socket.io не может указать IP-адрес. Возможно, это ограничение можно преодолеть, создав экземпляр http-сервера. Я новичок в socket.io и node.js, и я немного потерял попытку сделать это. Я буду включать исходный код сервера (который прослушивает конкретный порт) и мою попытку создать экземпляр сервера на определенном IP-адресе.
Оригинал
(function() {
var io;
io = require('socket.io').listen(80);
io.sockets.on('connection', function(socket) {
socket.on('drawClick', function(data) {
socket.broadcast.emit('draw', {
x: data.x,
y: data.y,
type: data.type
});
});
});
}).call(this);
Модифицированного
(function() {
var host = "10.70.254.76";
var port = 80;
var http = require("http").createServer();
var io = require("socket.io").listen(http);
http.listen(port, host);
io.sockets.on('connection', function(socket) {
socket.on('drawClick', function(data) {
socket.broadcast.emit('draw', {
x: data.x,
y: data.y,
type: data.type
});
});
});
}).call(this);
Я получаю ошибки: слушать EACCES при запуске модифицированного кода
Хорошо, мой измененный код работает, если я установил порт на 8080. Я получаю ошибку EACCES при попытке использовать 80 – TylerEKnight
порт 80 запрещен поскольку он принадлежит судоустройствам (пользователям root), вы можете заставить его использовать «sudo node app.js», но это не очень хорошая практика. – sfiore