xmpp實現個人聊天

2021-06-27 01:53:41 字數 3004 閱讀 4755

最近一直相研究下如何用xmpp第三方庫寫乙個實現群組聊天的demo但苦於沒人給指路,所以就從個人聊天開始下手。這裡就講一下個人聊天用xmpp如何實現

然後新增路徑/usr/include/libxml2  

然後匯入五個系統庫 libxml2.dylib  

cfnetwork.framework  

systemconfiguration.framework security.framework 以及 libresolv.dylib  

然後就可以執行了 。

關於xmpp最近也搜尋了一些資料  

大體上就是說了一些xmpp的一些格式以及一些由來等等  

例如其前身是jabber所以會看到jabber id,jid的位址格式:[node]@[domain]/[resource],其中node是節點,也就是在網路中的實體,即你的使用者名稱,domain是指伺服器網域名稱,而resource指的是使用者的裝置,乙個使用者可以用多個裝置進行登入(同時不同時我就不是很清楚了),其實這個resource一般都不寫。最重要的一點  

因為是xmpp是通過流傳播的,所以在tcp傳播中傳播的其實就是xml所以在呼叫方法的時候需要傳輸的一些可能就是xml格式的東西  

下面是上課的時候乙個demo

首先確定xmpp是通過流進行傳播,所以第一步要先建立流。關於

xmpproster

我也不是很懂  看英文文件解釋的也是比較粗淺  個人覺得這個東西實現的用流應該也可以實現  但是可能會比流的方法要簡單一些,可能理解有些偏差。

要想懂得如何實現個人聊天  我覺得首先應該要明確的一點就是理解xmppstreamdelegate這個**協議呼叫方法的意思 以及知道何時呼叫   知道了這個應該也就理解了這個聊天是怎麼用這個三方庫實現的 //

//  viewcontroller.m

//  xmppdemo

////  created by pk on 14/10/17.

//#import "viewcontroller.h"

#import "xmppframework.h"

#define host @"1000phone.net"

@inte***ce viewcontroller ()

- (ibaction)reg:(id)sender;

- (ibaction)login:(id)sender;

- (ibaction)addfriend:(id)sender;

- (ibaction)sendmessage:(id)sender;

- (ibaction)getfriendlist:(id)sender;

@end

@implementation viewcontroller

- (void)viewdidload

//上線

- (void)goonline

//下線

- (void)gooffline

//註冊

- (void)reg:(id)sender

//設定jid

[_stream setmyjid:[xmppjid jidwithstring:[nsstring stringwithformat:@"%@@%@", _namefield.text, host]]];

//設定tag

_stream.tag = @"

註冊";

//連線伺服器

[_stream connectwithtimeout:30 error:nil];

}//登陸

- (void)login:(id)sender

//設定登陸jid

[_stream setmyjid:[xmppjid jidwithstring:[nsstring stringwithformat:@"%@@%@", _namefield.text, host]]];

//tag值

_stream.tag = @"

登陸";

[_stream connectwithtimeout:30 error:nil];

}//新增好友

- (void)addfriend:(id)sender

//得到好友列表

- (void)getfriendlist:(id)sender

//傳送訊息

- (void)sendmessage:(id)sender

//連線到伺服器

- (void)xmppstreamdidconnect:(xmppstream *)sender

//登陸

if ([sender.tag isequaltostring:@"

登陸"])

}//註冊成功

- (void)xmppstreamdidregister:(xmppstream *)sender

//註冊失敗

- (void)xmppstream:(xmppstream *)sender didnotregister:(ddxmlelement *)error

//登陸成功

- (void)xmppstreamdidauthenticate:(xmppstream *)sender

//登入失敗

- (void)xmppstream:(xmppstream *)sender didnotauthenticate:(ddxmlelement *)error

//接收到好友請求

- (void)xmppstream:(xmppstream *)sender didreceivepresence:(xmpppresence *)presence

//得到好友列表

- (bool)xmppstream:(xmppstream *)sender didreceiveiq:(xmppiq *)iq

return yes;

}//接收到訊息

- (void)xmppstream:(xmppstream *)sender didreceivemessage:(xmppmessage *)message

@end

xmpp聊天室配置

設定聊天室是持久聊天室,即將要被儲存下來 submitform.setanswer muc roomconfig persistentroom true 房間僅對成員開放 submitform.setanswer muc roomconfig membersonly false 允許佔有者邀請其他人...

基於xmpp聊天室實現,國外牛人作品

xmpp的官網 測試帳號註冊 這邊給乙個win7 64位 本人電腦配置 pc端安裝包 手機端在收訊息方面和qq是一樣的,當然xmpp本身不支援檔案 傳輸,以前做的時候是這樣。現在不知道版本是不是可以直接支援了 pc端不多截屏了,比較強大。自己安裝看看吧 手機端apk 原始碼網上都有。6.15 有很多...

通訊 基於Xmpp協議實現的聊天室

size medium 前段時間寫了個自定義通訊協議的聊天室 即用 r n標記字串,作為一句話 總感覺自己弄的那個協議實現雖然簡單,但是拓展性就太差了,只適合於傳送聊天的內容,難以包含更多的資訊。基於上述幾點,於是就開始接觸xmpp協議,並自己定義了乙個簡單的xmpp協議用以實現聊天室。size s...