【发布时间】:2012-03-14 05:28:19
【问题描述】:
我有一个运行 IIS 和带有 socket.io 的 node.js 的 Windows 服务器,用于我正在开发的交互式白板应用程序。我希望 IIS 网站和 node.js 服务器都侦听端口 80,但绑定到不同的 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,我的修改后的代码可以工作。尝试使用 80 时出现 EACCES 错误
-
端口 80 被禁止,因为它属于 sudoers(root 用户),您可以使用“sudo node app.js”强制它,但不是一个好习惯。