我正在尝试从桌面应用程序连接到我在Heroku上部署的远程服务器。
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);
var port = process.env.PORT || 3000;
server.listen(port, function() {
console.log('listening to', port);
});
io.on('connection', function(socket) {
socket.on('send', function(data) {
socket.emit('sever send msg', data);
}
});
这是我的服务器代码,我将该服务器部署到Heroku,有没有办法让我用桌面应用程序的套接字连接到这个服务器?我正在使用Electron尝试制作桌面应用程序,并尝试让socket.io与远程服务器一起工作。以下是我桌面应用程序中的相关代码。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<ul id="messages"></ul>
<form action="">
<input id="m" autocomplete="off" /><button>Send</button>
</form>
<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script>
var socket = io('THE HEROKU APP URL');
$('form').submit(function(){
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
socket.on('chat message', function(msg){
$('#messages').append($('<li>').text(msg));
});
</script>
<div id="root"></div>
</html>
目前我一直收到503无法连接服务
答案 0 :(得分:0)
您不必在桌面应用程序中包含端口。您可以做的一件事就是检查请求错误原因-在heroku上使用socket.io部署应用程序时,我也遇到了类似的问题。原因可能是您缺少以下内容:
io.origins("*:*")
// or
io.set("origins", "*:*");
在app.js或在heroku中称为节点文件的任何文件中。 我不建议在生产中使用“ :”。
您可以看一下https://github.com/joan41868/ts-mysafemessage-api或https://github.com/joan41868/mysafemessage的示例,我在两个插座上都使用了套接字,并且第一个(部署在https://mysafemessage.herokuapp.com上)已经启动并且工作。