09 2011 档案

Openfire 用户离线、断线 及心跳检测
摘要:客户端登出分为正常离线和断线,正常离线会发送presence 消息通知服务器,断线则无通知发送。1. 正常离线:客户端在离线之前发送<presence id='***' type ="unavailable"></presence>由PresenceRouter 路由到PresenceUpdateHandler 中处理。判断Type为unavailable 之后先进行广播,再设置session的状态,再更新presenceManager中用户最后一次的状态。presenceManager中会更新lastActivityCache 中的 阅读全文

posted @ 2011-09-29 18:24 心笑峰 阅读(12595) 评论(1) 推荐(1) 编辑

Mysql 数据库热备份
摘要:主从模式:主服务器server1: 192.168.1.20 Mysql 5.0 需要备份的数据库 mydb从服务器server2: 192.168.1.22 Mysql 6.0 1.备份现有数据:最好先停止mysql service使用[MysqlHome]:\bin\mysqldumple.exe工具 将现有数据备份成一个sql文件:d:\>cd [MysqlHome][MysqlHome]>cd binbin:\>mysqldumple -u root -p mydb> d:\mydb.sql //有自己写的存储过程或函数时加上--routines 选项,否则默认 阅读全文

posted @ 2011-09-27 13:57 心笑峰 阅读(4291) 评论(0) 推荐(0) 编辑

ejabberd分析(四) 用户登录
摘要:仍然看ejabberd_c2s 这个gen_fsm 模块。RECV <stream:stream to="localhost" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0"> SENT <?xml version='1.0' encoding='UTF-8'?><stream:stream xmlns:stream="htt 阅读全文

posted @ 2011-09-15 23:02 心笑峰 阅读(2023) 评论(0) 推荐(0) 编辑

ejabberd分析(二) 用户注册
摘要:ejabberd中由ejabberd_c2s处理:ejabberd_c2s模块启动后gen_fsm的状态位于wait_for_stream客户端发送<stream:stream to="localhost" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0">服务器端wait_for_stream 函数中经过 case xml:get_attr_s("xmlns:stream&q 阅读全文

posted @ 2011-09-15 02:13 心笑峰 阅读(2984) 评论(1) 推荐(0) 编辑

erlang(2) gen_server
摘要:通过前面的erlang(1)我们了解到了一个基本的服务器的实现方法。erlang中为我们提供了这样一个服务器的现成的实现,就是gen_server,不用自己去编写服务器程序了。所要做的就是以下几个事:1.确定我们回调模块的名称2.编写接口函数3.实现六个回调方法也就是说我们只需要关注于回调模块的实现就OK了。1: -module(XXXX) 定义模块名称2:接口函数,可供调用的函数。 在这里你可以定义所有需要的方法,作为功能调用的入口。 例如常见的start()、stop()等。他们的作用就是调用gen_server,完成指定功能。3:实现回调函数,一共需要实现六个。 init()/1 --- 阅读全文

posted @ 2011-09-13 21:00 心笑峰 阅读(1202) 评论(0) 推荐(0) 编辑

openfire servlet插件
摘要:项目中需要 openfire 对外提供一个web接口,接受客户端发送过来的http 请求,按照参数处理后返回相应的response。于是考虑使用servlet插件。 实现方法:1.在src/plugins目录下建立如下结构的目录。 2.在java build path 中source 页添加 myservlet/src/java 目录。 3.在org.jivesoftware.openfire.plugin 包下新建class MyservletPlugin 实现Plugin接口;新建org.jivesoftware.openfire.plugin.myservlet包,在包下新建Myse.. 阅读全文

posted @ 2011-09-09 21:56 心笑峰 阅读(1288) 评论(2) 推荐(0) 编辑

ejabberd分析(三)启动流程
摘要:ejabberd的启动从ejabberd:start() 开始。application:start(ejabberd).application用来表示一个可以单独启动和停止、并被复用的程序单元。通常一个application都有一个同名的app文件来定义。对于系统工具(systool)直接调用的app文件必须包含以下几项:description, vsn, modules, registered, applications我们查看ejabberd.app可以看到以下内容: {application, ejabberd, [{description, "ejabberd"}, 阅读全文

posted @ 2011-09-08 22:48 心笑峰 阅读(2153) 评论(0) 推荐(0) 编辑

一个java项目的打包与发布
摘要:自己整了个java项目,里面实现了一些数据库访问、配置文件读取、日志记录的功能,在eclipse上调试运行都OK,但需要发布到服务器上就没辙了。项目的目录如下:查了下资料终于搞定,过程如下:1.将项目调试通过,保证项目本身没有error。2.在项目上右击export --->选java下的JAR file 点next。3.全选整个项目,并在复选框中选"export all output folders for check projects" ,export destination中填要生成的jar名,点next。4.pakeging option 直接点next。5. 阅读全文

posted @ 2011-09-08 12:47 心笑峰 阅读(711) 评论(0) 推荐(0) 编辑

erlang(1)
摘要:%%server1.erl: -module(server1) -export([start/2,rpc/2]) start(Name,Mod)-> register(Name,spawn(fun()->loop(Name,Mod,Mod:init())end)). rpc(Name,Request)-> Name!{self(),Request}, receive {Name,Response}->Response end. loop(Name,Mod,State)-> receive {From,Request}-> {Re... 阅读全文

posted @ 2011-09-05 22:53 心笑峰 阅读(834) 评论(1) 推荐(1) 编辑

ejabberd分析(一)
摘要:1.客户端连接服务器,并发送消息给服务器的处理在ejabberd_c2s中。 ejabberd_c2s 是一个gen_fsm 状态机,在 ejabberd启动时装载。 初始状态为 wait_for_stream,接受形为 {xmlstreamstart, _Name, Attrs} 的消息,其他任何消息都会导致stop。 接受到连接请求,发送feature 请求后状态改为wait_for_feature_request 。 接受到feature 再发送challenge 后,状态改为 wait_for_sasl_response。 经过sasl鉴权后,状态改为 wait_for_stream, 阅读全文

posted @ 2011-09-02 13:14 心笑峰 阅读(4696) 评论(0) 推荐(3) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示