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の設定により、パブリックエンドポイントであり、同じネットワーク上にないため、機能していない可能性があると思いました。

だから私はこれをWebブラウザのクライアント側で試しました:

<!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