簡體   English   中英

如何使用匡威圖書館發送聊天消息

[英]How to send chat messages using converse library

我將openfire用作XMPP服務器,並將converse用作客戶端庫。 我想從我的聊天窗口發送聊天消息到openfire。 為此,我想將文本發送到相反的方法,該方法會將消息發送到XMPP服務器。 我正在嘗試使用以下方式發送消息:

var msg = converse.env.$msg({
      from: 'a1@localhost',
      to: 'a6@localhost',
      type: 'chat',
      body: "Hi"
   });
   converse.send(msg);

但這會在websocket的控制台網絡中發送以下幀:

消息從='a1 @ localhost'到='a6 @ localhost'type ='聊天'body ='Hi'xmlns ='jabber:client'/>

這不會將消息傳輸到其他用戶,也不會將其存儲在表中。 我非常確定我調用了錯誤的函數。 任何人都可以提供任何幫助。

您正在調用正確的函數。

您可能會錯過的地方:

  1. “ a6 @ localhost”客戶端中消息的偵聽器:正如我在文檔中閱讀的那樣,功能很少

  2. 可能是服務器的正確名稱。 “本地主機”有問題。 您可以在自己的網絡面板上檢查Openfire的真實服務名稱

  3. 要檢查消息是否在Openfire中傳遞,您可以檢查OF的日志(檢查調試日志,但可能必須啟用它)。 實時消息不存儲在數據庫中,僅存儲在groupchat的數據庫中,而不是每次AND脫機消息中。 在db上找不到它們沒有任何意義

https://conversejs.org/docs/html/development.html

converse.chats.open('buddy@example.com');
converse.chats.get('buddy@example.com');
converse.listen.on('message', function (event, messageXML) { ... });

語法錯誤。 conversejs使用strophe插件來構造和發送消息。 它公開了用於構造節的Strophe $ msg消息生成器。 必須采用以下格式:

converse.env.$msg({from: 'a1@localhost', to: 'a6@localhost', type: 'chat'}).c('body').t('Hi');

您需要添加一個正文節點,並在其中添加消息的文本節點。

您還可以創建和添加自己的api方法,並在內部創建一個發送自定義節的方法,並使用api公開它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM