C# 编程HTML5 websocket聊天室
我想创建基于HTML5WebSocket的HTML5Web多室聊天。 但我需要一些帮助来开始 我想在c#中编写服务器端代码,但我找不到任何教程,说明如何在c#中使用多室聊天websocket服务器 是否有任何服务器已经在.net中实现,或者我可以将其更新为多室聊天 这是一个小项目,一个容纳10人的房间。你能告诉我怎么开始吗 多谢各位 我准备示例代码结构: 主服务器类:C# 编程HTML5 websocket聊天室,c#,asp.net,html,websocket,C#,Asp.net,Html,Websocket,我想创建基于HTML5WebSocket的HTML5Web多室聊天。 但我需要一些帮助来开始 我想在c#中编写服务器端代码,但我找不到任何教程,说明如何在c#中使用多室聊天websocket服务器 是否有任何服务器已经在.net中实现,或者我可以将其更新为多室聊天 这是一个小项目,一个容纳10人的房间。你能告诉我怎么开始吗 多谢各位 我准备示例代码结构: 主服务器类: class Program { // List of courses, which are currentli
class Program
{
// List of courses, which are currentli avalible ( REPRESENT CHAT ROOM)
protected static ConcurrentDictionary<Course, string> OnlineUsers = new ConcurrentDictionary<Course, string>();
static void Main(string[] args)
{
// Initialize the server on port 81, accept any IPs, and bind events.
var aServer = new WebSocketServer(81, IPAddress.Any)
{
OnReceive = OnReceive,
OnSend = OnSend,
OnConnected = OnConnect,
OnDisconnect = OnDisconnect,
TimeOut = new TimeSpan(0, 5, 0)
};
aServer.Start();
// Accept commands on the console and keep it alive
var command = string.Empty;
while (command != "exit")
{
command = Console.ReadLine();
}
aServer.Stop();
}
// event when the clients connect to server
// Server send to client list of Lessons which are avalible, after
private static void OnConnect(UserContext context)
{
throw new NotImplementedException();
}
// event whent the client, want to disconnect from server
private static void OnDisconnect(UserContext context)
{
throw new NotImplementedException();
}
// event, when client is sending some data
private static void OnSend(UserContext context)
{
throw new NotImplementedException();
}
// event, when server receive data from client
// client choose which room want to join and, we add cleint to list of lessons which he choose
// another method ... Register, Rename, LogOff ...
private static void OnReceive(UserContext context)
{
throw new NotImplementedException();
}
}
对我来说,这是一个很好的结构?我有很多课程(房间),有一个老师,一门课可以有20个学生。。在一门课程中,学生可以使用聊天(网络插座)和绘图板与技术人员交谈 这就是我构建对象层次结构的方式: 聊天服务器应该有一个聊天室列表 每个
聊天室
都应该有一个聊天用户的列表
每个ChatUser
都应该有一个或没有ChatRoom
和一个出站套接字
(假设一个用户一次只在一个房间里。允许多个房间会让事情变得更复杂)
这就是房间选择的工作原理:
当客户端连接时,将创建一个ChatUser
。服务器要做的第一件事是将聊天室列表发送给用户。然后,客户端用它想要加入的聊天室的名称进行响应。当该名称的聊天室不存在时,将创建该聊天室并将其添加到聊天室的全局列表中
然后将客户机添加到文件室,并在客户机上设置文件室
这就是聊天的工作原理:
当用户的套接字接收到聊天消息时,它应该在用户当前所在的聊天室中调用SendToAllClients
方法(当聊天室为空时,它应该向用户返回一条错误消息,说明他们必须先加入聊天室)
然后,文件室的SendToAll
方法应调用其用户列表中所有用户的SendToClient
然后,类的SendToClient
方法将聊天消息发送到客户端
如何为每个用户扩展多个聊天室
要允许客户端同时加入多个聊天室并在其中进行单独的对话,客户端必须能够:
- 随时请求房间列表,而不仅仅是在启动时
- 随时加入会议室,而不仅仅是在启动时
- 离开房间
- 发送邮件时指定房间
这意味着客户端想要执行的操作无法从其当前的状态推断出来。您需要将此信息添加到用户的消息中。例如,您可以将其作为前缀。像
!list
要求提供房间清单
!join:asdf
加入/创建房间asdf
_asdf:Hello
向房间asdf发送消息Hello
来自服务器的消息应该有类似的前缀,以便客户端可以推断消息是房间列表还是聊天室消息,以及消息来自哪个房间。您应该尝试查看ASP.NET的SignalR(例如:jabbr.NET/)。这可能会更有用、更方便。是的,炼金术球窝看起来不错。它也有聊天应用程序的样本,如果我想做多房间聊天呢?我需要更新什么?谢谢你!不要期望我们为您编写代码。如果你被困在某个地方,stackoverflow会帮助你。对不起,我不想从你那里得到代码。。4.我的英语不好,所以你写的时候可能看起来不太好。。但我只想知道如何解决这个问题,因为我不知道从哪里开始编程。。我搜索了关于他的问题的话题,但我没有找到任何好的解决方法。因此,如果你能从理论上帮助我,我将需要从多室聊天开始,我将非常感激。是的,这就是我需要的。非常感谢你,菲利普。关于客户,我的想法是,创建techer应用程序,lector在其中拥有自己的类。在班上大约有20人,lector将有一块板(HTML5画布)和当前班级的聊天。问题是,客户一次上两节课,做什么更好?我认为这没有道理。因此,他需要注销当前课程。因此,一个客户端一次只能访问一个课程。你们认为这是一个很好的解决方案吗?所以对我来说,聊天室是一个课堂,老师有一个黑板,它使用websocket与学生(客户)共享黑板,每节课都有可能聊天。你认为Alchemy Websockets服务器是我服务器端架构的良好基础吗?关于Alchemy:我不知道,我从未使用过它。链接已经失效。
!join:asdf
_asdf:Hello