后台维护界面展现:
后台首页
账户及其人员列表
人员的组织及其所在群组的维护页面就不在展现下面展现客户端。
用户登录
鼠标悬停
维护状态
鼠标右键
查看人员信息
查看聊天记录
维护个人资料
聊天窗口
互相附件传送
IM实现消息提醒
实现群组之间的聊天
以上是IM(即时通信)一些基本功能的简介,好了就先到此为止吧。。。。。
在Pushlet的应用方面希望可以与大家相互交流,互相学习。
JavaScript两种发送消息的方式不用多说
1、Ajax保持心跳的即时通信
2、往前台输送HTML的即时通信
下面贴Java实现即时通信的代码
package com.jlee.im;
import java.util.Map;
import nl.justobjects.pushlet.client.PushletClient;
import nl.justobjects.pushlet.client.PushletClientListener;
import nl.justobjects.pushlet.core.Event;
import nl.justobjects.pushlet.core.Protocol;
public class SystemChatEngine extends Thread implements PushletClientListener, Protocol {
// private static SystemChatEngine systemChatEngine = new SystemChatEngine("http://localhost:8888/im/pushlet.srv");
private static SystemChatEngine engine = null ;
private PushletClient pushletClient;
private Map<String ,String> attributemap ;
private String aHosturl=null;
private String SUBJECT = "/pushlet/ping";
private String imSubject = null;
private SystemChatEngine(String aHosturl, String subject, String imSubject, Map<String ,String> map) {
this.aHosturl = aHosturl;
this.SUBJECT = subject ;
this.attributemap = map ;
this.imSubject = imSubject ;
}
public static SystemChatEngine getInstance(String aHosturl, String subject ,String imSubject ,Map<String ,String> map){
if(engine==null){
engine = new SystemChatEngine(aHosturl,subject,imSubject,map) ;
engine.start() ;
}
return engine ;
}
public void run() {
try {
pushletClient = new PushletClient(aHosturl);
pushletClient.setDebug(false);
pushletClient.setUid(attributemap.get("uid")) ;
pushletClient.join();
pushletClient.listen(this, Protocol.MODE_PULL,SUBJECT);
System.out.println("pushletClient started");
pushletClient.publish(imSubject, attributemap);
} catch (Exception e) {
e.printStackTrace();
return;
}
}
/** Error occurred. */
public void onError(String message) {
System.out.println(message);
}
/** Abort event from server. */
public void onAbort(Event theEvent) {
}
/** Data event from server. */
public void onData(Event theEvent) {
String meSessionID = theEvent.getField("uid");
}
/** Heartbeat event from server. */
public void onHeartbeat(Event theEvent) {
}
public void onRefresh(Event theEvent) {
}
public void onJoinListenAck(Event theEvent) {
String meSessionID = theEvent.getField("uid");
}
public void onListenAck(Event theEvent) {
String meSessionID = theEvent.getField("uid");
}
/**
* @return pushletClient
*/
// public static PushletClient getPushletClient() {
// while(systemChatEngine.pushletClient==null){}
// return systemChatEngine.pushletClient;
// }
/** Main program. */
// public static void main(String args[]) {
// systemChatEngine.start();
// }
}
package com.jlee.im;
import java.util.HashMap;
import java.util.Map;
import sun.misc.BASE64Encoder;
public class WebIMClient {
static SystemChatEngine engine = null ;
public void sendTask()throws Exception{
Map<String ,String> attributemap = new HashMap<String, String>() ;
BASE64Encoder encoder = new BASE64Encoder();
String fromName = encoder.encode("jlee".getBytes("utf-8")) ;
String message = java.net.URLEncoder.encode(
encoder.encode(
"<a href='#' title='http://www.baidu.com' name='alabel'>baidu</a>去百度查IM".getBytes("utf-8"))) ;
String remark = encoder.encode("备注".getBytes("utf-8")) ;
String title = encoder.encode("主题1".getBytes("utf-8")) ;
String msgType = encoder.encode("类型1".getBytes("utf-8")) ;
String msgGroup = encoder.encode("self".getBytes("utf-8")) ;//self(表示消息来自系统OA)或者other(消息来自其他系统)
attributemap.put("uid" ,"728852348a9f4c219f9666facef19356") ;//该字段不会进入数据库,只是充当Pushlet所依赖的Id
attributemap.put("fromId", "728852348a9f4c219f9666facef19356") ;
attributemap.put("fromName", fromName) ;
attributemap.put("toId", "86523b57993048a0b82bd06772e432dd") ;
attributemap.put("toGroupId", null) ;
attributemap.put("message", message) ;
attributemap.put("remark", remark) ;
attributemap.put("title", title) ;
attributemap.put("msgType", msgType) ;
attributemap.put("msgGroup", msgGroup) ;
engine = SystemChatEngine.getInstance(
"http://localhost:8888/im/pushlet.srv", "/pushlet/ping,/task/warn","/task/warn", attributemap) ;
}
public static void main(String[] args) {
WebIMClient client = new WebIMClient() ;
try {
client.sendTask() ;
} catch (Exception e) {
e.printStackTrace();
}
}
}
- 大小: 24.5 KB
- 大小: 21.4 KB
- 大小: 9.3 KB
- 大小: 36.7 KB
- 大小: 36.8 KB
- 大小: 37.7 KB
- 大小: 9.4 KB
- 大小: 10.5 KB
- 大小: 30.9 KB
- 大小: 25.1 KB
- 大小: 8.7 KB
- 大小: 24.5 KB
- 大小: 19 KB
分享到:
相关推荐
实现通过pushlet,进行点对点聊天功能。 包括: 在线用户上线的通知 离线的通知 来新消息时的通知 前台使用Ext ,后台使用pushlet /pushlet/WebRoot/index.jsp 页面主要包含几个部分。 Ext.PUSHLET_URL='...
bsIM.war,基于pushlet WebQq
实现通过pushlet,进行点对点聊天功能。 包括: 在线用户上线的通知 离线的通知 来新消息时的通知 前台使用Ext ,后台使用pushlet /pushlet/WebRoot/index.jsp 页面主要包含几个部分。 Ext.PUSHLET_URL='...
容易上手的简单pushlet例子,供大家学习,代码不错,值得下载。
基于pushlet实现的网站消息推送,适合初学者~~~~详情请看:http://blog.csdn.net/zeqblog/article/details/16811935
pushlet实现服务器端向客户端推送消息,包括广播式推送、指定ID推送等等,本人总结
pushlet 和comet 资料介绍 介绍如何从服器端push subscrite 给浏览器
使用Pushlet来实现服务器端向客户端推送信息
直接放在tomcat的webapp下运行即可
服务器推 pushlet 服务器推 pushlet 服务器推 pushlet 服务器推 pushlet
pushlet开发与应用
pushlet白皮书pushlet白皮书pushlet白皮书pushlet白皮书pushlet白皮书
基于pushlet web 实时聊天系统 项目没有任何问题,使用pushlet源码实现服务器推技术 实时通信 导入myeclipse 即可运行!
pushlet+extjs实现简易的聊天组
pushlet配置应用实例,看了之后就能简单应用pushlet实时推送数据
pushlet+extjs实现的简易聊天组
对comet实现中的pushlet框架进行说明,可以参照该说明进行框架使用
使用开源框架pushlet实现的http长连接技术(服务器推技术),里面有pushlet框架的源码以及使用文档(服务器推、一对多、点对点)
Pushlet 是一个开源的 Comet 框架,Pushlet 使用了观察者模式:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的事件队列里。 ...
pushlet 所需夹包 和配置文件 ajax-pushlet-client.js pushlet-sessionid.jar sources.properties pushlet.properties