上篇
开了个头编写了基本的框架,这次连同客户端服务器端代码一起完善下。
首先修改客户端代码:
之前在数据交换
部分,客户端中定义了一个Message bean类,里面包含了发送一条消息所需要的基本信息,包括id、type、subject、from、to、content等。但这里的
content是一个String 类型,如果要表示更复杂的消息就不太适用了。
由于所有的消息id、type、subject、from、to 这几个成员的类型是确定的,对应的操作方法也是固定的,所以我们抽象出一个抽象类:Packet 用来表示交互中的所有消息:
Packet.java:
与之前不同的是这次将Bean解析为JSON String的任务交给Bean本身。可以看到以上代码中并没有定义content的实现,所以具体的消息可根据自身需要来定制。
根据这个思想,改造普通消息类Message:
再修改下发送部分的代码,直接调用对象的toString()方法:
新建一个类ClientInfo 表示客户端要设置的信息:
新建设置客户端消息类:SetClientInfo继承Packet类
可以看到这里将content 设置为了刚才的ClientInfo 对象。
下面修改服务器端:
先要去掉JSON数据解析时的is_binary判断,因为以后发送的消息content里不一定就是binary了。
再修改client_manager.erl 中更改客户端信息部分的代码,将content中的json数据转成#clientinfo,再更新到数据表中去。
为此新建一个专门的模块util_SetInfoParas.erl处理setClientInfo消息:
接着在更新数据库前调用以上代码:
client_manager.erl:
更新成功后,会将此消息广播给所有的在线用户:
chat_room.erl
最后需要修改util_MessageParas.erl中的JSON编码部分,判断如果要发送给客户端的Message消息内容是list的话才转成相应的字符串。
再修改客户端收到消息后的解析代码:
测试结果如下:
另外,既然能够设置客户端的昵称了,那么就再实现下发消息时from的替换吧:
先为client_manager添加获取客户端昵称功能,获取不到或undfined就取默认的:
再修改设置个人信息后的通知消息:
再修改client_session中下发时的from:
测试效果如下:
分享到:
相关推荐
erlang 聊天室源代码,初学者项目,花了两周时间完成,其中设计参考的是著名聊天软件rabbitMQ 的部分模块
附有需求文档,设计文档,以及一些说明文档,简单的聊天室功能,适合初学者阅读,是本人学习erlang过程中写的,参照了rabbitMQ的核心模块
里面包含Server端Erlang代码和Client端JAVA代码。编写过程在我博客里。
基于erlang的简易聊天室,主要技术是通过gen_tcp和gen_servere实现的
使用Shell充当客户端,多个聊天频道,支持私聊 队伍聊天 区域聊天; Mysql存储用户账户密码,实现注册登录; 此项目由本人入门Erlang过程中编写,前期了解Erlang这门语言如何使用Socket和进程的调用,以及各种Erlang...
Erlang程序设计 第2版 Erlang程序设计 第2版Erlang程序设计 第2版
Erlang程序设计(第2版).pdf 高清带目录。 .
erlang 程序设计 源码 erlang 程序设计 源码 erlang 程序设计 源码erlang 程序设计 源码
erlang程序设计 的相关代码例子程序,比较多了,希望对有需要的童鞋有帮助
书中兼顾了顺序编程、并发编程和分布式编程,重点介绍如何编写并发和分布式的Erlang程序以及如何在多核CPU上自动加速程序,并深入地讨论了开发Erlang应用中至关重要的文件和网络编程、OTP、ETS和DETS等主题。第2版...
erlang程序设计 erlang入门手册
使用erlang语言实现连接ElasticSearch服务器的客户端代码
erlang -c语言程序接口.pdferlang -c语言程序接erlang -c语言程序接口.pdf口.pdf
erlang发明者写的书。erlang/otp一种高可靠性的平台。
Erlang程序设计中文版 完整书签 erlang programming
Erlang程序设计 第2版,超清原版PDF,学习Erlang必备!!!
[Erlang程序设计]源代码,包括了erlang程序设计一书全部实例代码;
erlang程序设计第二版习题答案 ,是我自己写的习题解答,也对照过网上的一些答案,相对来说是更加简洁和符合题意的解答,不过后面几章因为时间问题没有写完,有问题或者意见可以私信找我。
Erlang并发编程,Erlang程序设计,Erlang中文手册。 学习erlang的好资料。 Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此...