我正在尝试借助 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/
都会显示用户连接的链接。
与显示有人访问链接时相比,为什么在加载表单时不显示。我希望在有人加载表单时显示该消息。