先定义消息格式如下:
请求: #message{type="get",subject="clientinfo",content="all"}
响应:#message{type="result",subject="clientinfo",content=[#clientinfo,#clientinfo,.....]}
修改客户端发送请求消息部分:
修改服务器端,给chat_room添加一个获取所有在线用户的方法:
在路由模块根据message.type 和message.subject将请求信息路由到以上方法
chat_room中处理get_member的调用,在里面定义一个本地方法getClient使用client_manager以#clientinfo格式获取在线用户
chat_room.erl:
这里为了方便后面的解析,返回的客户信息需要预先编码为JSONString在Erlang下decode后的格式,所以根据需要在util_setInfoParas.erl中定义了deparaElement/1方法
chat_room处理后会将结果打包成一个Message发送给对应的客户端进程,客户端进程再发送给最终的客户端
再修改客户端JAVA代码,将收到的JSONString转换为Bean对象。这里专门新建一个类GetUserInfo表示接收到的result信息
再修改客户端接收部分的代码,将对应类型的消息解析
测试结果如下:
启动一个客户端,修改其昵称为clientA
再启动一个客户端,修改昵称为clientB
clientB客户端获取当前在线用户(这里只打印昵称)
分享到:
相关推荐
5. **状态管理模块**:保存聊天室的状态,如在线用户列表、历史记录等,可能采用了Erlang的分布式数据库如Mnesia来存储。 在源码中,你可能会看到Erlang的并发特性如`spawn`和`receive`表达式,它们允许创建和管理...
Erlang是一种面向并发的、函数式编程语言,特别适合构建高可用性和容错性的分布式系统,如聊天室。在本项目中,我们看到"erlang 聊天室源码"是一个初学者级别的实践项目,开发者花费了两周时间完成,并且在设计上受...
总结,这个项目展示了如何利用Erlang强大的并发和分布式特性构建聊天室服务器,同时利用Java的广泛库和GUI支持创建用户友好的客户端。通过学习这个案例,开发者可以加深对Erlang并发编程和Java网络编程的理解,以及...
4. **并发处理**:由于Erlang天生支持并发,所以聊天室可能会创建多个进程来同时处理多个用户的请求。 5. **错误处理**:gen_server的错误处理机制有助于确保系统在出现问题时仍能优雅地运行,例如处理断开的连接或...
书中兼顾了顺序编程、并发编程和分布式编程,重点介绍如何编写并发和分布式的Erlang程序以及如何在多核CPU上自动加速程序,并深入地讨论了开发Erlang应用中至关重要的文件和网络编程、OTP、ETS和DETS等主题。...
使用Shell充当客户端,多个聊天频道,支持私聊 队伍聊天 区域聊天; Mysql存储用户账户密码,实现注册登录; 此项目由本人入门Erlang过程中编写,前期了解Erlang这门语言如何使用Socket和进程的调用,以及各种Erlang...
通过对这些文件名的分析,我们可以看出这些Erlang程序涵盖了并发处理、进程通信、异常处理、服务器设计、数据处理和测试等多个方面,体现了Erlang在构建分布式系统中的强大功能。学习并理解这些示例,对于深入掌握...
【Erlang程序设计(第2版)】是由Erlang之父Joe Armstrong撰写的一本经典著作,专注于介绍Erlang编程语言在并发、分布式和容错系统中的应用。本书适用于初学者和有一定经验的Erlang程序员。作者在书中讨论了如何利用...
**Erlang程序设计与入门** Erlang是一种并发、函数式编程语言,主要用于构建分布式、高可用性、容错性强的系统。它的设计灵感来源于电信行业的需求,由瑞典爱立信公司于1986年开发。Erlang以其独特的并发模型、轻量...
### Erlang与C语言程序接口详解 #### 一、引言 在软件开发领域,不同编程语言之间的交互是一项重要的技术。Erlang作为一种专为构建高并发、容错性强的应用程序而设计的语言,在与其他语言(如C语言)的集成方面具有...
这个聊天程序可能包括客户端和服务器端的组件,允许用户通过Erlang或Java环境进行实时通信。 **Erlang的特性** Erlang是一种函数式编程语言,以其并发处理和容错能力而闻名。在构建聊天系统时,Erlang的轻量级进程...
**Erlang程序设计中文版**是一本深入探讨Erlang编程语言的书籍,旨在帮助开发者理解和掌握这种在并发处理和分布式系统中广泛使用的语言。Erlang以其强大的错误恢复能力、热代码替换以及对大规模并发的支持而闻名,是...
Erlang程序设计 第2版 Erlang程序设计 第2版Erlang程序设计 第2版
本资源包含了一本Erlang程序设计的入门经典书籍及其配套源码,适合初学者深入理解Erlang编程。 1. **Erlang简介** Erlang以其强大的并发处理能力而闻名,它采用了轻量级进程模型,使得在单个系统中可以同时运行...
这个压缩包包含了Erlang程序设计的完整目录和源码,是学习和理解Erlang编程的重要资源。 Erlang的并发特性源于其轻量级进程模型,每个进程都有自己的内存空间,进程间通信通过消息传递实现,这种设计降低了并发执行...
**Erlang程序设计源代码详解** Erlang是一种面向并发、函数式编程语言,尤其在分布式系统和高可用性领域表现出色。本资源包含了《Erlang程序设计》一书的所有实例代码,旨在帮助读者深入理解Erlang语言的核心特性和...
4. **在线课程**:寻找在线课程,如Coursera、Udemy上的Erlang课程,获取更系统的教学指导。 总的来说,Erlang程序设计是一门深入探讨Erlang语言及其应用的课程,结合源代码实践,可以帮助你建立起坚实的基础,进而...
在深入理解Erlang程序设计的源码之前,我们需要了解Erlang的一些核心概念和特性。 1. **并发性**:Erlang的并发模型基于轻量级进程(Lightweight Processes,LWP),它们类似于操作系统中的线程,但资源消耗小得多...