【问题标题】:Is there a way for a desktop application to connect to a remote sever with socket.io有没有办法让桌面应用程序使用 socket.io 连接到远程服务器
【发布时间】:2016-08-10 04:32:34
【问题描述】:

我正在尝试从桌面应用程序连接到我在 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 failed to connect 服务不可用

【问题讨论】:

  • 你在同一个端口上监听和连接吗?
  • 我对heroku不熟悉,但是我看到上面sn-p中的代码指定了一个PORT,默认为3000,但是第二个sn-p中的代码没有提到一个PORT - 我只是想知道你是否在连接的每一端都使用相同的端口......虽然端口在技术上是 URL 的一部分,但我只询问了端口,假设你至少会使用正确的主机和URL 中的路径
  • 不透露'THE HEROKU APP URL' - 它是否包含端口
  • “THE HEROKU APP URL”目前不包含端口,但我不确定要将哪个端口添加到 url 以正确连接
  • 我推荐你的服务器端正在监听的同一个端口

标签: javascript sockets heroku socket.io electron


【解决方案1】:

您不必在桌面应用程序中包含该端口。您可以做的一件事是检查请求错误原因 - 我在 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)目前正在运行。

【讨论】:

    猜你喜欢
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 2020-01-13
    • 2021-08-19
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多