1

我正在尝试借助 Visual Studio 中可用的 SocketIO4Net 库在 Windows Web 表单应用程序上编写 Web 套接字连接的客户端。这是我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using SocketIOClient;
namespace WFA
{
    public partial class Form1 : Form
    {

        Client socket = new Client("ws://ec2-52-39-154-191.us-west-2.compute.amazonaws.com:8080");

        private void Form1_Load(object sender, EventArgs e)
        {
            socket.Connect();
        }
    }
}

我在带有端点的 Amazon Web Services (AWS) 上有实例

ec2-52-39-154-191.us-west-2.compute.amazonaws.com

我在服务器上有 app.js 文件,它一直在运行

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

io.on('connection', function(socket){
  console.log("user connected");
});

http.listen(8080, function(){
  console.log('listening on *:8080');
});

每次加载表单时,这应该只显示“listening on *:8080”和“user connected”消息。我确实在 *:8080 上显示监听,但在加载表单时不显示用户连接。我不明白我哪里错了。由于 AWS 上的设置,我认为它可能无法正常工作,因为它是一个公共端点而不是在同一个网络上。

所以我在网络浏览器客户端尝试了这个:

<!doctype html>
<html>
  <head>
  </head>
  <body>
    <div id = "chat">
        <ul id="messages"></ul>
    </div>
    <form action="">
      <input id="m" autocomplete="off" /><button>Send</button>
    </form>
    <script src="/socket.io/socket.io.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script>
        var socket = io.connect('ws://ec2-52-39-154-191.us-west-2.compute.amazonaws.com:8080');
    </script>
  </body>
</html>

使用此客户端代码每次有人访问时,http://ec2-52-39-154-191.us-west-2.compute.amazonaws.com:8080/ 都会显示用户连接的链接。

与显示有人访问链接时相比,为什么在加载表单时不显示。我希望在有人加载表单时显示该消息。

4

0 回答 0