clean up all your subscriptions on your behalf. This allows the platform to continue running optimally. So state getting out of sync isn't your concern</p><p><em>Hint</em></p><p>The listen pattern can be used for so much more than just this usecase!</p><h3 class="anchor anchorWithStickyNavbar_y2LR" id="realtime-search-finally">Realtime Search, Finally!<a class="hash-link" href="#realtime-search-finally" title="Direct link to heading"></a></h3><p>Okay I really hope you made it this far! Let's look at how realtime-search APIs work.</p><p>On the server we don't need to actually write any server code, you just have to run the realtime-search service. You can run it via docker <a href="https://hub.docker.com/r/deepstreamio/realtime-search" target="_blank" rel="noopener noreferrer">deepstreamio/realtime-search</a>, but it's also shipped via node under the <a href="https://www.npmjs.com/package/@deepstream/realtime-search" target="_blank" rel="noopener noreferrer">@deepstream/realtime-search</a> package.</p><p>We will be following the <a href="https://github.com/deepstreamIO/deepstream.io-realtime-search/tree/master/example" target="_blank" rel="noopener noreferrer">example found in the github repo</a>. This will use docker compose, which is useful as we need to setup a mongodb replica as well as run deepstream and the realtime-search service for us.</p><div class="codeBlockContainer_J+bg language-bash theme-code-block"><div class="codeBlockContent_csEI bash"><pre tabindex="0" class="prism-code language-bash codeBlock_rtdJ thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> clone https://github.com/deepstreamIO/deepstream.io-realtime-search.git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> deepstream.io-realtime-search/example</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">docker-compose</span><span class="token plain"> up</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>Giving us the output:</p><div class="codeBlockContainer_J+bg language-bash theme-code-block"><div class="codeBlockContent_csEI bash"><pre tabindex="0" class="prism-code language-bash codeBlock_rtdJ thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#393A34"><span class="token number" style="color:#36acaa">11</span><span class="token plain">:53:13 AM </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> Initializing MongoDB Connection</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">11</span><span class="token plain">:53:13 AM </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> Connected successfully to mongodb database deepstream</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">11</span><span class="token plain">:53:13 AM </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> Initializing Deepstream connection</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">11</span><span class="token plain">:53:13 AM </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> Successfully logged </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> to deepstream</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">11</span><span class="token plain">:53:13 AM </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> Providing rpc method </span><span class="token string" style="color:#e3116c">"realtime_search"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">11</span><span class="token plain">:53:13 AM </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> listening </span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> realtime_search/list_.*</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">11</span><span class="token plain">:53:13 AM </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> realtime search provider ready</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>And then on the client side you would just need to do the same thing we mentioned earlier:</p><p>Client:
0 commit comments