Soy nuevo en nodeJs. Perdóname por hacer una pregunta tonta.
Estoy tratando de implementar una aplicación web de sala de chat en tiempo real en un servidor Azure con iisnode. La aplicación web funciona bien en localhost, pero cuando la cargo para ejecutarla en el servidor, el socket no puede conectarse del cliente al servidor. Estoy usando 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 }); }; }cuando trato de solicitar la url, me da error:
socket.io.js:4948 GET http://visafe-paltform.cloudapp.net:3700/socket.io/?EIO=3&transport=polling&t=LjM71Yc net::ERR_CONNECTION_TIMED_OUT¿Alguien puede ayudarme? Gracias por adelantado.
Para una máquina virtual clásica, debe abrir el puerto 3700 en Azure Endpoint y Windows Firewall.
Para obtener más información sobre cómo abrir el puerto en el punto final, consulte este enlace .
Si desea acceder a su servicio con una IP pública, asegúrese de que su servicio esté escuchando en 0.0.0.0 y que pueda hacer telnet 127.0.0.1 3700 con éxito en su máquina virtual.