连接类
import orgjivesoftwaresmackConnectionConfiguration;
import orgjivesoftwaresmackXMPPConnection;
import orgjivesoftwaresmackXMPPException;
public class Conn {
private static XMPPConnection connection = null ;
public static XMPPConnection getConnection(String domain)
throws XMPPException {
XMPPConnection connection = new XMPPConnection(domain);
connectionconnect();
return connection;
}
public static XMPPConnection getConnection(String domain, int port)
throws XMPPException {
if(connection==null){
ConnectionConfiguration config = new ConnectionConfiguration(domain,port);
connection = new XMPPConnection(config);
connectionconnect();
}
return connection;
}
}
测试类
import orgjivesoftwaresmackChat;
import orgjivesoftwaresmackChatManager;
import orgjivesoftwaresmackChatManagerListener;
import orgjivesoftwaresmackMessageListener;
import orgjivesoftwaresmackRoster;
import orgjivesoftwaresmackRosterEntry;
import orgjivesoftwaresmackRosterGroup;
import orgjivesoftwaresmackRosterListener;
import orgjivesoftwaresmackXMPPConnection;
import orgjivesoftwaresmackXMPPException;
import orgjivesoftwaresmackpacketMessage;
import orgjivesoftwaresmackpacketPresence;
public class Test2 {
public static boolean LongAccount(XMPPConnection connection,
String username, String password) {
try {
connectionlogin(username, password);
return true;
} catch (Exception e) {
eprintStackTrace();
return false;
}
}
public static void main(String[] args) throws XMPPException {
XMPPConnection connection = ConngetConnection("1921681117");
boolean t = LongAccount(connection, "qeekey@localhostlocaldomain", "password");
Systemoutprintln("t login =" + t);
if(t){
ChatManager chatmanager = connectiongetChatManager();
//新建一个会话
Chat newChat = chatmanagercreateChat("lxm@localhostlocaldomain", new MessageListener() {
public void processMessage(Chat chat, Message message) {
Systemoutprintln("start me , Received from " + messagegetFrom() + " message: " + messagegetBody());
}
});
//发送消息
newChatsendMessage("我是菜鸟");
}
}
转载,仅供参考。
消息推送(Push)就是通过服务器把内容主动发送到客户端的过程。运营人员通过自己的产品或第三方工具对用户移动设备进行主动消息推送。完成推送后,消息通知会展示在移动设备的锁定屏幕及通知栏上,用户点击通知即可去往相应页面。
现在流行的消息推送实现方式,主要为长链接方式实现。其原理是客户端主动和服务器建立TCP长链接,长链接建立之后,客户端定期向服务器发送心跳包用于保持链接,当有消息要发送的时候,服务器可以直接通过这个已经建立好的长链接,将消息发送到客户端。
个推作为国内移动推送领域的早期进入者,于2010年推出个推消息推送SDK产品,十余年来持续为移动开发者提供稳定、高效、智能的消息推送服务,成功服务了人民日报、新华社、CCTV、新浪微博等在内的数十万APP客户。个推消息推送,也是运用长链接的方式实现消息推送的,其长链接稳定性高、存活好,消息送达率高。开发者通过集成个推消息推送SDK,即可简单、快捷地实现Android和iOS平台的消息推送功能,有效提高产品活跃度、增加用户留存。
如果您对个推消息推送感兴趣,欢迎前往个推开发者中心免费注册体验。
个推的合作客户
我于2014年开启即时通讯的开发之路,历经从服务端到客户端,从第三方到自研,经历过诸多的研发难题,都一一破解。现将经验总结如下,希望对行业内从事IM开发的程序员有所帮助。
①P2P方式
P2P方式多用于局域网内聊天,这种方式在有种种限制和不便。一方面它只适合在线的点对点消息传输,对离线,群组等支持不够。另一方面由于 NAT 的存在,使得不同局域网内机器互联难度大大上升,在某些网络类型(对称NAT)下无法建立连接。使用P2P方式的软件在启动后一般做两件事情:
1、进行UDP广播:发送自己信息和接受同局域网内其他端信息。
2、开启TCP监听:等待其他端进行连接。
②服务器中转方式
大部分的互联网IM产品都采用服务器中转这种方式进行消息传输,相对于P2P的方式,具有有以下的优点:
1、支持更多P2P无法支持或支持不好的业务,如离线消息,群组,聊天室。
2、方便业务逻辑的拓展和新旧版本的兼容,当然它也有自己的问题,就是服务器架构复杂,并发要求高。
通过以上的比较,建议我们在开发IM系统的时候使用服务器中转的方式。
IM的网络连接方式有基于TCP的长连接和基于>Android 几种消息推送方案总结:
一、使用GCM(Google Cloude Messaging)Android自带的推送GCM可以帮助开发人员给他们的Android应用程序发送数据。它是一个轻量级的消息,告诉Android应用程序有新的数据要从服务器获取,或者是一个消息,其中包含了4KB的payload data(像即时通讯这类应用程序可以直接使用该payload消息)。
GCM服务处理排队的消息,并把消息传递到目标设备上运行的Android应用程序。
二、使用XMPP协议(Openfire+Spark+Smark)XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性,有很强的可扩展性。包括上面讲的GCM服务器底层也是采用XMPP协议封装的。
三、使用MQTT协议(想了解更多可以看>1, xmpp是最早由jabber提出的一整套即时通讯协议,开发即时通讯软件用。
2, 不是
3,阅读协议,开发出符合协议的程序即可
4,Jabber服务器有Openfire等
一种通信方式是把服务器作为客户端之间通信的媒介。
服务器负责对整个网络进行监听,每个客户端启动后,与服务器的监听端口进行连接,服务器派生一个新的工作线程去处理此客户端的请求,并负责将此客户端的请求数据中转到接收方。即客户端之间的连接请求和通信数据均需要通过服务器中转。
这种方式便于对客户端的数据进行流量分析和数据监控,但服务器的性能很容易成为通信的瓶颈。
在线检测即时消息传递。
另一中通信方式是客户端间采用点对点的方式直接进行通信。
此时服务器只负责协助客户端之间建立点对点连接,客户端直接建立连接后则直接进行点对点通信。
SIP协议,基于ip协议。一般用于建立语音和视频通信。目前sip协议已经被制定得较为完善。
xmpp是一种基于xml的协议。不仅可以实现文本之间的传递,也具有灵活的扩展性从而方便地实现更复杂格式文件的即时传递。
目前基本所有的通用IM产品,通信双方都是直接进行通信,而不必通过服务器来中转,造成对于用户间数据的监管非常困难。如此,如何防止商业机密和其他非法信息的传播也是一个重要的安全问题。
xmpp:基于xml很强扩展性,很强灵活性,很好开放性(源码开放),易于实现持久连接,很好安全性。
应用
google 发布世界上首个开源的Html5 sip 客户端
HTML5 SIP客户端是一款开源的,完全利用JavaScript编写的集社交(FaceBook,Twitter,Google+),在线游戏,电子商务等应用于一体。无扩展,无插件或是必备的网关,视频堆栈技术依赖于WebRTC。如同主页里的Demo视频演示,你可以轻松实现Chrome和IOS/Android移动设备之间的实时视频/音频通话。
很适合硬件(内存和运算能力)受限的嵌入式系统使用。
Html5 sip 客户端 新特性包括:
支持Audio / Video通话功能;
支持即时信息;
Presence;
呼叫保持/恢复;
显示呼叫转移;
支持多个账号;
双音多频信号(DTMF)使用SIIP INFO
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)