跳轉至

聊天伺服器連接

Hive SDK 聊天功能使用 WebSocket 通信 與 Hive 聊天套接字伺服器。因此,要使用 Hive SDK 聊天功能,您必須首先參考以下指南以連接到 Hive 聊天套接字伺服器。

連接請求

要連接到聊天,請調用Chat類的connect方法。

這是一個請求聊天連接的範例代碼。

Warning

Hive SDK 聊天功能只能由使用 Hive SDK 認證功能登錄的用戶(包括訪客帳戶)使用,並且已獲發 PlayerID

using hive;

Chat.connect((ResultAPI result) => {
    if (result.isSuccess()) {
        // API Call Success
    }
});
#include "HiveChat.h"

FHiveChat::Connect(FHiveChatOnResultDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
    if (Result.IsSuccess()) {
        // API Call Success
    }
}));
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;

Chat::connect([=](ResultAPI const & result) {
    if (result.isSuccess()) {
        // API Call Success
    }
});
import com.hive.Chat;
import com.hive.ResultAPI;

Chat.connect(object : Chat.ConnectListener {
    override fun onResult(result: ResultAPI) {
        if (result.isSuccess) {
            // API Call Success
        }
    }
})
import com.hive.Chat;

Chat.connect(result -> {
    if (result.isSuccess()) {
        // API Call Success
    }
});
import HIVEService

ChatInterface.connect { result in
    if result.isSuccess() {
        // API Call Success
    }
}
#import "HIVEService.h"

[HiveChat connectWithHandler:^(HIVEResultAPI * result) {
    if ([result isSuccess]) {
        // API Call Success
    }
}];

重新連接請求

聊天連線可能會因網路環境或應用程式狀態變化而暫時中斷。

自動請求重新連線的情況

發生以下情況時,SDK 會自動開始重新連線。

  • 網路連線暫時中斷時
  • 應用程式從背景狀態返回前景時
  • 因伺服器暫時性異常等原因導致連線終止時

自動重新連線開始時,會觸發 OnReconnectStarted 事件。

手動請求重新連線

如果不等待自動重新連線而需要立即重新連線,請呼叫 Chat.reconnect()。在聊天 Socket 伺服器連線中斷後的 10 分鐘內請求重新連線時,系統會自動嘗試重新加入先前參與的頻道。回應會傳回成功加入的頻道清單與失敗的頻道清單。

手動請求重新連線範例程式碼

這裡是請求聊天重新連接的示例代碼。

using hive;

Chat.reconnect((ResultAPI result, List<String> channelIds, List<String> failChannelIds) => {
    if (result.isSuccess()) {
        // API Call Success
    }
});
#include "HiveChat.h"

FHiveChat::Reconnect(FHiveChatOnReconnectDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TArray<FString>& ChannelIds, const TArray<FString>& FailChannelIds) {
    if (Result.IsSuccess()) {
        // API Call Success
    }
}));
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;

Chat::reconnect([=](ResultAPI const & result, std::vector<std::string>channelIds, std::vector<std::string>failChannelIds) {
    if (result.isSuccess()) {
        // API Call Success
    }
});
import com.hive.Chat;
import com.hive.ResultAPI;

Chat.reconnect(object : Chat.ReconnectListener {
    override fun onResult(result: ResultAPI, channelIds: ArrayList<String>, failChannelIds: ArrayList<String>) {
        if (result.isSuccess) {
            // API 呼叫成功
        }
    }
})
import com.hive.Chat;

Chat.reconnect(result, channelIds, failChannelIds -> {
    if (result.isSuccess()) {
        // API Call Success
    }
});
import HIVEService

ChatInterface.connect { result, channelIds, failChannelIds in
    if result.isSuccess() {
        // API Call Success
    }
}
#import "HIVEService.h"

[HiveChat reconnectWithHandler:^(HIVEResultAPI * result, NSArray<NSString *> * channelIds,  NSArray<NSString *> * failChannelIds) {
    if ([result isSuccess]) {
        // API 呼叫成功
    }
}];

斷線請求

要断开聊天,请调用Chat类的disconnect()方法。以下是断开聊天连接的示例代码。

Note

当应用用户帐户注销时,聊天断开请求会自动执行。

using hive;

Chat.disconnect((ResultAPI result) => {
    if (result.isSuccess()) {
        // API Call Success
    }
});
#include "HiveChat.h"

FHiveChat::Disconnect(FHiveChatOnResultDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
    if (Result.IsSuccess()) {
        // API Call Success
    }
}));
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;

Chat::disconnect([=](ResultAPI const & result) {
    if (result.isSuccess()) {
        // API Call Success
    }
});
import com.hive.Chat;
import com.hive.ResultAPI;

Chat.disconnect(object : Chat.DisconnectListener {
    override fun onResult(result: ResultAPI) {
        if (result.isSuccess) {
            // API Call Success
        }
    }
})
import com.hive.Chat;

Chat.disconnect(result -> {
    if (result.isSuccess()) {
        // API Call Success
    }
});
import HIVEService

ChatInterface.disconnect(result) {
    if result.isSuccess() {
        // API Call Success
    }
}
#import "HIVEService.h"

[HiveChat disconnectWithHandler:^(HIVEResultAPI * result) {
    if ([result isSuccess]) {
        // API Call Success
    }
}];

檢查連接狀態

檢查應用程式使用者目前是否連接到聊天。調用Chat類的isConnected方法。

這是一個檢查聊天連接狀態的示例代碼。

using hive;

Boolean isConnected = Chat.isConnected();
#include "HiveChat.h"

bool IsConnected = FHiveChat::IsConnected();
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;

bool isConnected = Chat::isConnected();
import com.hive.Chat;

val isConnected = Chat.isConnected()
import com.hive.Chat;

Boolean isConnected = Chat.isConnected();
import HIVEService

let isConnected = ChatInterface.isConnected()
#import "HIVEService.h"

bool isConnected = [ChatInterface isConnected];

連接事件管理

Hive 聊天插座伺服器檢測連接狀態並持續將狀態變更事件傳遞給應用程式。欲了解詳細的事件處理方法,請參考事件管理 > 連接事件文件。