有没有一种方法可以让桌面应用程序用socket.io连接到远程服务器?

Is there a way for a desktop application to connect to a remote sever with socket.io

本文关键字:连接 io socket 服务器 应用程序 桌面 一种 方法 有没有      更新时间:2023-09-26

我正在尝试从桌面应用程序连接到部署在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,有一种方法让我连接到这个服务器与套接字从桌面应用程序?我正在使用电子来尝试制作桌面应用程序,并试图获得插座。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连接失败服务不可用

您不必在桌面应用程序中包含端口。您可以做的一件事是检查请求错误原因-我在使用socket部署应用程序时遇到过类似的问题。我在这里。原因可能是您遗漏了以下内容:

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

在app.js或者你在heroku上的node文件中。我不建议在生产中使用":"。

你可以看看https://github.com/joan41868/ts-mysafemessage-api或https://github.com/joan41868/mysafemessage的例子,我已经在他们两个上使用套接字,第一个(部署在:https://mysafemessage.herokuapp.com)目前正在工作。