在Elastic Beanstalk上托管C#WebSocket服务器

在Elastic Beanstalk上托管C#WebSocket服务器,c#,amazon-web-services,amazon-elastic-beanstalk,tcplistener,C#,Amazon Web Services,Amazon Elastic Beanstalk,Tcplistener,我从头编写了一个WS-server,并试图将其托管在AWS弹性Beanstalk服务上。但是,我只找到了一种将其添加到web项目(可以托管在EB上)的方法,方法是在startup上添加一个线程。cs: Thread thr = new Thread(() => { var ws = new WebsocketServer(); }); thr.IsBackground = true;

我从头编写了一个WS-server,并试图将其托管在AWS弹性Beanstalk服务上。但是,我只找到了一种将其添加到web项目(可以托管在EB上)的方法,方法是在startup上添加一个线程。cs:

Thread thr = new Thread(() =>
            {
                var ws = new WebsocketServer();

            });
            thr.IsBackground = true;
            thr.Start();
令我高兴和惊讶的是,我能够在本地成功地测试它,并且它工作得非常好,但是当使用EB时,我无法连接到任何东西(即使我99%确定我正在向适当的URL发送请求)。我已尝试添加指定的端口,但没有任何帮助。 我使用的是一个初始化如下的TcpListener:

TcpListener server = new TcpListener(IPAddress.Parse(“127.0.0.1”), 443);
server.Start();
并接受具有TcpClient的客户端,如下所示:

TcpClient client = new TcpClient();
client = server.AcceptTcpClient();
现在根据我的经验,我假设连接工作正常,但EB不会自动将其设置为公共访问。有没有办法做到这一点?使用与web应用程序相同的端口是否有帮助?(如果是,如何设置/查看它使用的端口?)。由于WS是通过HTTP请求启动的,是否有可能使用以下格式的控制器方法建立连接:

        [Route("ws")] 
        [HttpGet]
        public async Task<IActionResult> ConnectWS()
        {
            return await AddClient();
        }
[路由(“ws”)]
[HttpGet]
公共异步任务ConnectWS()
{
返回wait AddClient();
}
我没有为正在使用的EB环境设置负载平衡器

最后,如果这是一个不好的做法或不可行,是否有其他AWS服务可以用来托管服务器,方便设置公共连接


谢谢大家!

看看你的代码,你需要打开443端口的流量。根据您的Elastic Beanstalk配置(带负载平衡器?或不带负载平衡器?请用此更新您的问题),您已接近将其用于AWS

这些高级步骤将帮助您实现目标:

  • 获取证书。为了进行测试,您可以在本地开发人员计算机上安装openSSL并创建自签名证书。注意:不要在现场生产系统上使用自签名证书。当你的网站公开时,获得一个吸引人的名字和一个真正的证书来展示你的服务
  • (如果没有负载平衡器,请跳到步骤3)转到AWS控制台中的Certification Manager。有一个蓝色的大按钮,导入证书。点击这个。使用您喜爱的文本编辑器打开步骤1中的
    server.crt
    文件,并将内容粘贴到顶部框中,标签为:Certificate body。然后用您喜爱的文本编辑器打开步骤2中的
    privatekey.cer
    文件,并将内容粘贴到第二个框中,标签为:Certificate private key。单击“查看并导入”,确保一切正常
  • 如果您有负载平衡器,请按照以下步骤操作。如果您没有负载平衡器,而它只是一个实例,那么它就有点复杂,因为您必须通过配置文件来完成。按照以下步骤操作:

  • 如果您的问题有更多配置细节的更新,请尝试并回复。我认为您已经接近完成并在AWS上运行它了。

    只是想澄清一下,这是为了设置https/ws连接吗?我目前正在测试一个不安全的连接(比如说端口80),它同样会失败。我回到了非安全状态,因为我无法设置它,所以我肯定会使用这个答案,但首先我想看看是否有任何连接可以工作。您是否通过visual Studio中的AWS工具包进行部署?