`
laodaobazi
  • 浏览: 277079 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

pushlet实现webQQ即时通信

阅读更多

后台维护界面展现:



                                                                 后台首页

 

 

 



                                                      账户及其人员列表

 

人员的组织及其所在群组的维护页面就不在展现下面展现客户端。

 



                     用户登录

 



               鼠标悬停

 

 



                  维护状态

 

 



                   鼠标右键

 

 



                                               查看人员信息

 

 

 



                                            查看聊天记录

 

 



                                          维护个人资料

 

 

 



                                           聊天窗口

 

 

 



                                         互相附件传送

 

 



                 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
分享到:
评论
5 楼 need_faith 2013-06-08  
"JavaScript两种发送消息的方式不用多说
1、Ajax保持心跳的即时通信
2、往前台输送HTML的即时通信"
不是很明白,
楼主说的两种方式其实是一种吧,
前台往后台发送消息,用户出发发送按钮的相关js,通过ajax发送;
响应文回写到前端(刷新本地已经发送的消息),完成一次通信;
其他用户给当前用户发送消息,采用的是轮询吧,每个多长时间去服务器请求一遍

没有推送,消息不能及时送达

4 楼 yehao0716 2013-06-08  
没有jar包
3 楼 willsonbin 2012-11-20  
如何运行起来?
2 楼 xumin198908 2012-03-13  
学习了!!!!!!
1 楼 need_faith 2011-10-08  
不错的文章

相关推荐

    pushlet实现简单的用户聊天

    总之,Pushlet技术为实时通信提供了一种高效且灵活的解决方案,特别适合需要实时更新数据的场景,如在线聊天、股票行情、游戏等。通过学习和实践"pushlet实现简单的用户聊天",开发者可以掌握这种技术,并将其应用于...

    使用Ext Pushlet 实现的点对点聊天功能

    实现通过pushlet,进行点对点聊天功能。 包括: 在线用户上线的通知 离线的通知 来新消息时的通知 前台使用Ext ,后台使用pushlet /pushlet/WebRoot/index.jsp 页面主要包含几个部分。 Ext.PUSHLET_URL='...

    bsIM.war 基于pushlet WebQq

    bsIM.war,基于pushlet WebQq

    PUSHLET即时通讯工程实例

    PUSHLET是一种基于Java技术实现的即时通讯系统,它允许服务器主动向客户端推送数据,而无需客户端持续轮询请求。这种技术在实时性要求高的应用中非常常见,如在线聊天、股票交易、游戏等场景。本实例将展示如何在...

    pushlet实现服务器端向客户端推送消息总结

    Pushlet 是一种基于 Java 的实时通信框架,用于实现在服务器端向客户端主动推送消息的功能,而无需客户端不断轮询。这种技术在构建实时应用程序,如聊天室、实时股票更新或在线游戏等场景中非常有用。以下是关于 ...

    基于pushlet实现的jsp网站消息推送

    【基于Pushlet实现的JSP网站消息推送】 在Web开发中,实时消息推送技术是提升用户体验的关键要素之一。传统的HTTP协议是一种无状态、请求-响应式的协议,这意味着服务器只有在客户端发起请求时才会进行交互。然而,...

    使用Ext Pushlet 实现的点对点聊天功能最新

    实现通过pushlet,进行点对点聊天功能。 包括: 在线用户上线的通知 离线的通知 来新消息时的通知 前台使用Ext ,后台使用pushlet /pushlet/WebRoot/index.jsp 页面主要包含几个部分。 Ext.PUSHLET_URL='...

    pushlet 和comet 资料介绍

    Pushlet和Comet技术是Web服务器向浏览器推送数据的两种策略,主要用于实现实时的、双向的通信。这两种技术在传统的HTTP协议基础上进行了扩展,克服了HTTP请求-响应模型的限制,使得服务器能够主动向客户端推送数据,...

    通过推送机制(Tomcat comet,pushlet)实现进度条

    标题中的“通过推送机制(Tomcat comet,pushlet)实现进度条”涉及到的是Web应用中的一种实时通信技术,主要用于提供动态更新和用户交互。这里主要介绍Tomcat的Comet和Pushlet技术,以及如何利用它们来创建一个...

    pushlet的JAR包和文档

    5. **bsIM.war**:这是一个WAR文件,通常包含了一个Java Web应用程序的全部部署内容,可能是一个使用Pushlet实现的即时通讯(IM)应用示例,可以直接在支持Java的Web服务器上部署运行。 6. **pushlet_文档.doc**:...

    使用Pushlet来实现服务器端向客户端推送信息

    使用Pushlet来实现服务器端向客户端推送信息

    基于pushlet_chat技术的群聊实现 解决了中文乱码问题

    在B/S架构下,由于浏览器与服务器之间的交互受限于HTTP协议的无状态性,Pushlet_Chat提供了一种有效突破这一限制的方法,实现了即时通信的可能。 3. **中文乱码问题** 在处理中文字符时,编码不一致常常导致乱码...

    pushlet

    总的来说,Pushlet技术为实现Web应用的实时通信提供了一种有效的方法,通过其特有的推送机制,极大地提高了用户体验和应用效率。开发者可以通过深入研究和实践Pushlet 2.0.3,掌握这一技术并在合适的项目中发挥它的...

    http长连接(服务器推)使用pushlet教程示例以及jar包源码

    通过深入研究这些文档和源码,你可以了解到Pushlet是如何在底层利用HTTP长连接来实现实时通信的,并掌握如何在自己的项目中集成和使用Pushlet框架,以实现高效、低延迟的服务器推功能。对于网页间通信,特别是需要...

    comet 框架 之 pushlet

    Pushlet的核心思想是通过一个持久化的HTTP连接来保持服务器与客户端之间的通信,使得服务器可以在有新数据时立即发送给客户端,而不是等待客户端的下一次请求。这样就大大减少了网络交互的次数,减轻了服务器的压力...

    pushlet服务器推技术例子

    通过上述机制,Pushlet服务器推技术实例能够实现高效的实时通信,尤其适用于需要实时交互的应用,如在线聊天室、实时股票报价等。在压缩包文件“pushlet”中,可能包含了实现Pushlet技术的源代码、配置文件和示例...

    pushlet简单配置应用

    Pushlet库的核心功能是实现实时的服务器向客户端推送数据,而无需客户端频繁发起请求,这大大提高了网络应用的效率和用户体验。以下是对Pushlet配置应用的详细解释: 1. **引入Pushlet.jar**:首先,你需要在你的...

    pushlet.jar 和示例工程

    "消息推送"是Pushlet的关键特性,它通过Comet技术实现双向通信,使得服务器能主动向浏览器或其他客户端应用推送数据,提高了用户体验和应用的实时性。 压缩包wjw465150-Pushlet-09f5559可能包含了Pushlet框架的源码...

    pushlet实例以及jar

    Pushlet是一种轻量级的、基于服务器推送(Server-Sent Events, SSE)技术,用于实现实时数据传输,特别是在Web应用中实现消息即时通知。 在Web开发中,传统的HTTP协议是基于请求-响应模型的,即客户端发起请求,...

    pushlet例子

    Pushlet的核心理念是通过长连接保持客户端与服务器之间的通信,从而实现实时数据推送。 Pushlet系统主要包括两部分:Pushlet服务器和Pushlet客户端。Pushlet服务器使用Servlet容器(如Tomcat)运行,处理来自客户端...

Global site tag (gtag.js) - Google Analytics