在 iisnode 上部署 nodejs webapp 时套接字获取 net::ERR_CONNECTION_TIMED_OUT
Socket get net::ERR_CONNECTION_TIMED_OUT when deploy nodejs webapp on iisnode
我是新手 nodeJs.Forgive 我问了一些愚蠢的问题。
我正在尝试使用 iisnode 在 Azure 服务器上部署实时聊天室 Web 应用程序。该 webapp 在本地主机上运行良好,但是当我将其上传到服务器上的 运行 时,套接字无法从客户端连接到服务器。我正在使用 nodejs+ express + jade.
server.js
var express = require("express"), http = require('http');
var app = express();
var server = http.createServer(app);
var port = process.env.PORT || 3700;
app.set('views', __dirname + '/tpl');
app.set('view engine', "jade");
app.engine('jade', require('jade').__express);
var deployPath = process.env.deployPath || "";
app.get(deployPath+ "/", function(req, res){
res.render("page",{deployPath: deployPath});
});
app.use(deployPath, express.static(__dirname + '/public'));
var io = require('socket.io')(server);
server.listen(port, 'http://visafe-paltform.cloudapp.net');
io.sockets.on('connection', function (socket) {
console("connected");
socket.emit('message', { message: 'welcome to the chat' });
socket.on('send', function (data) {
io.sockets.emit('message', data);
});
});
console.log("Listening on port " + port);
Client.js
window.onload = function() {
var messages = [];
var address = window.location.protocol + '//' + window.location.host;
console.log(address);
var details = {
resource: (window.location.pathname.split('/').slice(0, -1).join('/') + '/socket.io').substring(1)
};
console.log(details);
//var socket = io.connect(address, details);
var socket = io.connect('http://visafe-paltform.cloudapp.net:3700');
//var socket = io.connect();
var field = document.getElementById("field");
var sendButton = document.getElementById("send");
var content = document.getElementById("content");
socket.on('message', function (data) {
if(data.message) {
messages.push(data.message);
var html = '';
for(var i=0; i<messages.length; i++) {
html += messages[i] + '<br />';
}
content.innerHTML = html;
} else {
console.log("There is a problem:", data);
}
});
sendButton.onclick = function() {
var text = field.value;
console.log("click:", field.value);
socket.emit('send', { message: text });
};
}
当我尝试请求 url 时,出现错误:
socket.io.js:4948 GET http://visafe-paltform.cloudapp.net:3700/socket.io/?EIO=3&transport=polling&t=LjM71Yc net::ERR_CONNECTION_TIMED_OUT
谁能帮帮我?提前致谢。
对于经典 VM,您应该在 Azure Endpoint 和 Windows 防火墙上打开端口 3700。
有关如何在端点上打开端口的更多信息,请参阅此 link。
如果您想使用 Public IP 访问您的服务,请确保您的服务正在侦听 0.0.0.0
并且您可以 telnet 127.0.0.1 3700
在您的 VM 上成功。
我是新手 nodeJs.Forgive 我问了一些愚蠢的问题。
我正在尝试使用 iisnode 在 Azure 服务器上部署实时聊天室 Web 应用程序。该 webapp 在本地主机上运行良好,但是当我将其上传到服务器上的 运行 时,套接字无法从客户端连接到服务器。我正在使用 nodejs+ express + jade.
server.js
var express = require("express"), http = require('http');
var app = express();
var server = http.createServer(app);
var port = process.env.PORT || 3700;
app.set('views', __dirname + '/tpl');
app.set('view engine', "jade");
app.engine('jade', require('jade').__express);
var deployPath = process.env.deployPath || "";
app.get(deployPath+ "/", function(req, res){
res.render("page",{deployPath: deployPath});
});
app.use(deployPath, express.static(__dirname + '/public'));
var io = require('socket.io')(server);
server.listen(port, 'http://visafe-paltform.cloudapp.net');
io.sockets.on('connection', function (socket) {
console("connected");
socket.emit('message', { message: 'welcome to the chat' });
socket.on('send', function (data) {
io.sockets.emit('message', data);
});
});
console.log("Listening on port " + port);
Client.js
window.onload = function() {
var messages = [];
var address = window.location.protocol + '//' + window.location.host;
console.log(address);
var details = {
resource: (window.location.pathname.split('/').slice(0, -1).join('/') + '/socket.io').substring(1)
};
console.log(details);
//var socket = io.connect(address, details);
var socket = io.connect('http://visafe-paltform.cloudapp.net:3700');
//var socket = io.connect();
var field = document.getElementById("field");
var sendButton = document.getElementById("send");
var content = document.getElementById("content");
socket.on('message', function (data) {
if(data.message) {
messages.push(data.message);
var html = '';
for(var i=0; i<messages.length; i++) {
html += messages[i] + '<br />';
}
content.innerHTML = html;
} else {
console.log("There is a problem:", data);
}
});
sendButton.onclick = function() {
var text = field.value;
console.log("click:", field.value);
socket.emit('send', { message: text });
};
}
当我尝试请求 url 时,出现错误:
socket.io.js:4948 GET http://visafe-paltform.cloudapp.net:3700/socket.io/?EIO=3&transport=polling&t=LjM71Yc net::ERR_CONNECTION_TIMED_OUT
谁能帮帮我?提前致谢。
对于经典 VM,您应该在 Azure Endpoint 和 Windows 防火墙上打开端口 3700。
有关如何在端点上打开端口的更多信息,请参阅此 link。
如果您想使用 Public IP 访问您的服务,请确保您的服务正在侦听 0.0.0.0
并且您可以 telnet 127.0.0.1 3700
在您的 VM 上成功。