首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >smack 4.1 Openfire示例示例

smack 4.1 Openfire示例示例
EN

Stack Overflow用户
提问于 2014-09-29 12:34:30
回答 1查看 8.1K关注 0票数 4

我一直在使用smack 3.4作为我的门户网站。我的安卓应用程序也使用了asmack 3.4 (aSmack开发在几年前就停止了,但在那里我使用了一些非官方的罐子。)面对文件上传和小组聊天的问题,它希望升级到正式的smack,因为它现在有了andoid本地支持)。

但是现在已经更新了smack,他们已经移动到4.1(android本机集成):

https://github.com/igniterealtime/Smack/wiki/Smack-4.1-Readme-and-Upgrade-Guide

因此,我正在寻找一些代码示例/样例项目/代码片段与、SMACK 4.1 alpha集成到android/web中。请提供一些有用的链接。

还有关于执行/或不执行此升级的建议。因为smack 4.1还没有发布。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-02-09 08:42:10

使用SSL的连接示例(smack-4.1.0-beta2-快照-2015-02-01):

代码语言:javascript
复制
    XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder();
    config.setSecurityMode(ConnectionConfiguration.SecurityMode.required);
    //For OLD STYLE SSL
    //config.setSecurityMode(ConnectionConfiguration.SecurityMode.enabled);
    config.setUsernameAndPassword(USERNAME + "@" + DOMAIN, "PASSWORD");
    config.setServiceName(DOMAIN);
    config.setHost(DOMAIN);
    config.setPort(PORT);
    config.setDebuggerEnabled(true);
    //OLD STYLE SSL
    //config.setSocketFactory(SSLSocketFactory.getDefault());

    try {
        SSLContext sc = SSLContext.getInstance("TLS");
        MemorizingTrustManager mtm = new MemorizingTrustManager(ctx);
        sc.init(null, MemorizingTrustManager.getInstanceList(ctx), new SecureRandom());
        config.setCustomSSLContext(sc);
        config.setHostnameVerifier(mtm.wrapHostnameVerifier(new org.apache.http.conn.ssl.StrictHostnameVerifier()));
    } catch (NoSuchAlgorithmException | KeyManagementException e) {
        throw new IllegalStateException(e);
    }

    mConnection = new XMPPTCPConnection(config.build());
    mConnection.setPacketReplyTimeout(10000);

    try {
        mConnection.connect();
        mConnection.login();
    } catch (SmackException | IOException | XMPPException e) {
        e.printStackTrace();
    }

聊天创建示例:

代码语言:javascript
复制
           final ChatManager chatManager = ChatManager.getInstanceFor(mConnection);
            chatManager.addChatListener(new ChatManagerListener() {
                @Override
                public void chatCreated(Chat chat, boolean b) {
                    chat.addMessageListener(new ChatMessageListener() {
                        @Override
                        public void processMessage(Chat chat, Message message) {
                            mServerResponse.gotMessage(message.getBody());
                            Log.d(TAG, message.toString());
                        }
                    });
                }
            });

            Chat chat2 = chatManager.createChat(USERNAME + "@" + DOMAIN);
            try {
                chat2.sendMessage("text");
            } catch (SmackException.NotConnectedException e) {
                e.printStackTrace();
            }
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26100058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档