在 HTML5 之後有了 web socket 讓我們可以用比較簡單的方式來製作線上聊天室,不過因為設置伺服器需要花些時間,不熟伺服器的開發者要弄起來應該會覺得很麻煩,這邊有一個方便的線上工具 CHATKIT 便可以讓我們比較快來製作線上聊天室。
CHATKIT 是屬於 PUSHER 的服務,要使用前我們先到上面註冊一個帳號。
註冊好後可以到 CHATKIT 的 DASHBOARD 做進一步的設定。
建立新的 app 後可以到 Credentials 上看到 Instance Locator 和 Secrect Key。

接下來則可以在 Console 那邊建立 User 和 Chatroom。

要測試的話可以先開一個 test token

接著讀入 chatkit: https://unpkg.com/@pusher/chatkit-client@1/dist/web/chatkit.js
然後來建立聊天室了。
const tokenProvider = new Chatkit.TokenProvider({
url: "YOUR TEST TOKEN ENDPOINT"
});
const chatManager = new Chatkit.ChatManager({
instanceLocator: "YOUR INSTANCE LOCATOR",
userId: "YOUR USER ID",
tokenProvider: tokenProvider
});
測試聊天室連線:
chatManager
.connect()
.then(currentUser => {
currentUser.subscribeToRoomMultipart({
roomId: currentUser.rooms[0].id,
hooks: {
onMessage: message => {
console.log("Received message:", message)
}
}
});
})
.catch(error => {
console.error("error:", error);
})
丟出訊息:
currentUser.sendSimpleMessage({
text: "hello",
roomId: currentUser.rooms[0].id
});
跟 UI 整在一起:
const tokenProvider = new Chatkit.TokenProvider({
url: "YOUR TEST TOKEN ENDPOINT"
});
const chatManager = new Chatkit.ChatManager({
instanceLocator: "YOUR INSTANCE LOCATOR",
userId: "YOUR USER ID",
tokenProvider: tokenProvider
});
chatManager
.connect()
.then(currentUser => {
currentUser.subscribeToRoomMultipart({
roomId: currentUser.rooms[0].id,
hooks: {
onMessage: message => {
const ul = document.getElementById("message-list");
const li = document.createElement("li");
li.appendChild(
document.createTextNode(`${message.senderId}: ${
// We know our message will have a single part with
// a plain text content because we used
// sendSimpleMessage. In general we'd have to check
// the partType here.
message.parts[0].payload.content
}`)
);
ul.appendChild(li);
}
}
});
const form = document.getElementById("message-form");
form.addEventListener("submit", e => {
e.preventDefault();
const input = document.getElementById("message-text");
currentUser.sendSimpleMessage({
text: input.value,
roomId: currentUser.rooms[0].id
});
input.value = "";
});
})
.catch(error => {
console.error("error:", error);
});
這邊只要替換聊天室裡的 USER ID,就可以透過 CHATKIT 來實作線上聊天室的功能了,有興趣的可以試試看。
這邊的教學是以目前的環境做測試,如果今後有變化也請以官方說明為主:
Chatkit JavaScript Quick Start