桌面应用程序是否有办法使用socket.io连接到远程服务器

时间:2016-08-10 04:32:34

标签: javascript sockets heroku socket.io electron

我正在尝试从桌面应用程序连接到我在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无法连接服务

1 个答案:

答案 0 :(得分:0)

您不必在桌面应用程序中包含端口。您可以做的一件事就是检查请求错误原因-在heroku上使用socket.io部署应用程序时,我也遇到了类似的问题。原因可能是您缺少以下内容:

 io.origins("*:*") 
// or 
 io.set("origins", "*:*");

在app.js或在heroku中称为节点文件的任何文件中。 我不建议在生产中使用“ ”。

您可以看一下https://github.com/joan41868/ts-mysafemessage-apihttps://github.com/joan41868/mysafemessage的示例,我在两个插座上都使用了套接字,并且第一个(部署在https://mysafemessage.herokuapp.com上)已经启动并且工作。