0
にcomunicateが、私はサービス労働者は、私がサービスワーカーからクライアントにメッセージを送信しようとしているクライアント
self.clients.matchAll()
.then((clients) => {
clients.forEach(function(client) {
client.postMessage({msg: 'Hello from SW'})
})
})
を使用している場合、私は、ブラウザのタブを開いている場合でも、それは、任意のクライアントに送信しませんしかし、私はサービスワーカーにクライアントからのメッセージを送信する場合
// client
navigator.serviceWorker.controller.postMessage({title: 'Send message from client'})
とサービスワーカーで
self.addEventListener('message', function(event) {
self.clients.fetchAll()
.then((clients) => {
clients.forEach(function(client) {
client.postMessage({msg: 'Hello from SW'})
})
})
})
メッセージを送信してクライアントを検出できます。 私は間違って何をしていますか?代わりにindexedDBを使用する必要がありますか?
あなたはself.clients.matchAllについては正しいですが、私はこれを使用しました。ブロードキャストチャンネルのAPIは本当にうまく機能します。ありがとう。 –