<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="64044" data-post-id="64044">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="idi527" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  idi527
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It seems like <code>websockex</code> doesn’t support iodata in <code>send_frame</code>?</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">** (exit) exited in: WebSockex.call(Some.Client, {:text, ["{\"cmd\":", [34, [], "keepalive", 34], ",\"session_id\":", [34, [], 34], ",\"transaction\":", [34, [], "y653PDXvxmGaW+0y4Nab", 34], 125]})
    ** (EXIT) an exception was raised:
        ** (ArgumentError) argument error
            :erlang.byte_size(["{\"cmd\":", [34, [], "keepalive", 34], ",\"session_id\":", [34, [], 34], ",\"transaction\":", [34, [], "y653PDXvxmGaW+0y4Nab", 34], 125])
            (websockex) lib/websockex/frame.ex:296: WebSockex.Frame.get_payload_length_bin/1
            (websockex) lib/websockex/frame.ex:257: WebSockex.Frame.encode_frame/1
            (websockex) lib/websockex.ex:723: WebSockex.sync_send/5
            (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
    (websockex) lib/websockex.ex:349: WebSockex.send_frame/2
</code></pre>
<p>Wouldn’t it be easier to use <code>IO.iodata_length</code> instead of <code>:erlang.byte_size</code>? Since it works both on binaries and iolists.</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">iex(8)&gt; data = API.Keepalive.new() |&gt; Jason.encode_to_iodata!() |&gt; IO.iodata_length()
74
iex(9)&gt; data = API.Keepalive.new() |&gt; Jason.encode!() |&gt; IO.iodata_length()
74
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="64044" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/websockex-an-elixir-websocket-client/4733/42">Post #41</a>
	                </div>
	            </div>
              <div id="likers-container-64044" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="64044"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #41"></div>
  </section>
</div>
    <div class="postbit" id="64093" data-post-id="64093">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Azolo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Azolo/120/2189_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Azolo
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="idi527" data-post="42" data-topic="4733">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/i/85e7bf/48.png" class="avatar"> idi527:</div>
<blockquote>
<p>Wouldn’t it be easier to use <code>IO.iodata_length</code> instead of <code>:erlang.byte_size</code>? Since it works both on binaries and iolists.</p>
</blockquote>
</aside>
<p>Honestly, it probably is easier to use <code>IO.iodata_length</code>. Feel free to open an issue or PR.</p>
<p>The thing that I don’t know about is checking to see if <code>iodata</code> is valid UTF8 for text frames. Currently I’m using <code>String.valid?/1</code>. If I remember correctly it doesn’t work with <code>iodata</code>. If it does, then I am totally wrong and there is no problem at all.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="64093" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/websockex-an-elixir-websocket-client/4733/43">Post #42</a>
	                </div>
	            </div>
              <div id="likers-container-64093" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="64093"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #42"></div>
  </section>
</div>
    <div class="postbit" id="64106" data-post-id="64106">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="idi527" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  idi527
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<blockquote>
<p>The thing that I don’t know about is checking to see if iodata is valid UTF8 for text frames. Currently I’m using String.valid?/1. If I remember correctly it doesn’t work with iodata. If it does, then I am totally wrong and there is no problem at all.</p>
</blockquote>
<p>Oh, I haven’t thought about it. Is this check required by the spec?</p>
<p>If it is, something like <a href="https://github.com/ninenines/cowlib/blob/master/src/cow_ws.erl#L469-L501" class="inline-onebox" rel="noopener nofollow ugc">cowlib/src/cow_ws.erl at master · ninenines/cowlib · GitHub</a> can be adapted to work with iodata.</p>
<p>The validation in cowboy though happens only on the receiving end, it seems.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="64106" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/websockex-an-elixir-websocket-client/4733/44">Post #43</a>
	                </div>
	            </div>
              <div id="likers-container-64106" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="64106"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #43"></div>
  </section>
</div>
    <div class="postbit" id="64157" data-post-id="64157">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Azolo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Azolo/120/2189_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Azolo
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a href="https://tools.ietf.org/html/rfc6455#section-5.6" rel="noopener nofollow ugc">Section 5.6 of the WebSocket Spec</a> says that all complete <code>text</code> data frames need to be valid UTF8. However, closer reading of <a href="https://tools.ietf.org/html/rfc6455#section-8.1" rel="noopener nofollow ugc">Section 8.1</a> implies that you could get away with sending a non-valid <code>text</code> frame and it is on the receiver to verify.</p>
<p>I think for the sake of this being a library and such, it should just work with as many use cases as possible instead of being the most correct version possible. So I am more than willing to forego the outgoing check in favor of making it work for your use case. Especially since the spec implies I <strong>can</strong> do that.</p>
<p>But there are probably a couple of non-trivial changes to make for <code>iodata</code>. Unless I don’t care about the overall send/write performance and just set it as a binary before it was sent, which would defeat the point of <code>iodata</code>.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="64157" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/websockex-an-elixir-websocket-client/4733/45">Post #44</a>
	                </div>
	            </div>
              <div id="likers-container-64157" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="64157"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #44"></div>
  </section>
</div>
    <div class="postbit" id="66765" data-post-id="66765">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Azolo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Azolo/120/2189_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Azolo
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<h2><a name="p-66765-websockex-041-released-1" class="anchor" href="#p-66765-websockex-041-released-1" aria-label="Heading link" rel="nofollow"></a>WebSockex 0.4.1 Released!</h2>
<h3><a name="p-66765-enhancements-2" class="anchor" href="#p-66765-enhancements-2" aria-label="Heading link" rel="nofollow"></a>Enhancements</h3>
<ul>
<li>Allow <code>:via</code> and <code>:global</code> tuples for named registration.
<ul>
<li>This includes handling for <code>cast/2</code> and <code>send_frame/2</code>.</li>
</ul>
</li>
<li>Add access to response headers during <code>handle_connect/2</code> via <code>Conn.resp_headers</code>.</li>
<li>Add <code>Conn.parse_url/1</code> to handle url to URI conversion.</li>
<li>Allow <code>Conn.new/2</code> to use a url string instead of a <code>URI</code> struct.</li>
<li>Automatically add a “/” path to a pathless url.
<ul>
<li>The HTTP request will break without a valid path!</li>
</ul>
</li>
<li>Add <code>child_spec</code> definitions for Elixir 1.5+
<ul>
<li>Or any version that exports <code>Supervisor.child_spec/2</code></li>
</ul>
</li>
<li>Some documentation tweaks</li>
</ul>
<h3><a name="p-66765-bug-fixes-3" class="anchor" href="#p-66765-bug-fixes-3" aria-label="Heading link" rel="nofollow"></a>Bug Fixes</h3>
<ul>
<li>No longer invoke <code>handle_disconnect</code> if there is reason to exit from invoking a callback. (e.g. an exception was raised)</li>
<li>Properly handle unexpected SSL socket termination.
<ul>
<li>This <em>seems</em> pretty important, but I don’t know…</li>
</ul>
</li>
<li>Return a descriptive error when trying to use <code>send_frame/2</code> in a callback.</li>
</ul>
<p>Take a look at the <a href="https://github.com/Azolo/websockex/compare/v0.4.0...v0.4.1" rel="noopener nofollow ugc"><code>v0.4.0...v0.4.1</code> diff</a> or the <a href="https://hex.pm/packages/websockex/0.4.1" rel="nofollow">release on <code>hex.pm</code></a> for more information.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="66765" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/websockex-an-elixir-websocket-client/4733/46">Post #45</a>
	                </div>
	            </div>
              <div id="likers-container-66765" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="66765"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #45"></div>
  </section>
</div>
    <div class="postbit" id="104102" data-post-id="104102">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ragamuf" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ragamuf/120/7602_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ragamuf
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thumbs up for sharing this work. I’m using it to integrate with Slack RTM.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="104102" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/websockex-an-elixir-websocket-client/4733/47">Post #46</a>
	                </div>
	            </div>
              <div id="likers-container-104102" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="104102"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #46"></div>
  </section>
</div>
    <div class="postbit" id="210207" data-post-id="210207">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="fcw528" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  fcw528
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Cannot use proxy. When will proxy option be added?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="210207" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/websockex-an-elixir-websocket-client/4733/48">Post #47</a>
	                </div>
	            </div>
              <div id="likers-container-210207" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="210207"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #47"></div>
  </section>
</div>
    <div class="postbit" id="210327" data-post-id="210327">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="AlchemistCamp" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/AlchemistCamp/120/8823_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  AlchemistCamp
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>This is probably a basic question, but I’ve been having some problems getting modules where I use <code>WebSockex</code> to not crash their supervisors when there’s an issue connecting (e.g. when I turn my wifi off).</p>
<p>Here’s my start_link:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  def start_link(opts \\ []) do
    state = %{heartbeat: 0}

    socket_opts = [
      ssl_options: [
        ciphers: :ssl.cipher_suites() ++ [{:rsa, :aes_128_cbc, :sha}]
      ],
      handle_initial_conn_failure: true
    ]

    opts = Keyword.merge(opts, socket_opts)
    WebSockex.start_link(@socket_url, __MODULE__, state, opts)
  end
</code></pre>
<p>With my wifi off, <code>iex -S mix</code> will crash with:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">* (Mix) Could not start application app: App.Application.start(:normal, []) returned an error: shutdown: failed to start child: App.Sockets.Supervisor
    ** (EXIT) shutdown: failed to start child: App.Sockets.Foo
        ** (EXIT) %WebSockex.ConnError{original: :timeout}
</code></pre>
<p>I’ve implemented a <code>handle_disconnect/2</code>. What changes should I make so that a networking failure doesn’t crash the whole module (and its supervisors)?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="210327" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/websockex-an-elixir-websocket-client/4733/49">Post #48</a>
	                </div>
	            </div>
              <div id="likers-container-210327" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="210327"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #48"></div>
  </section>
</div>
    <div class="postbit" id="210337" data-post-id="210337">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Exadra37" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Exadra37/120/9183_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Exadra37
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="AlchemistCamp" data-post="49" data-topic="4733">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/alchemistcamp/48/8823_2.png" class="avatar"> AlchemistCamp:</div>
<blockquote>
<p>I’ve implemented a <code>handle_disconnect/2</code>.</p>
</blockquote>
</aside>
<p>Maybe you need to <a href="https://github.com/Azolo/websockex#terminating-with-normal-after-an-exceptional-close-or-error" rel="noopener nofollow ugc">implement</a> <code>terminate/2</code>?</p>
<blockquote>
<h3>Terminating with :normal after an Exceptional Close or Error</h3>
<p>Usually you’ll want to negotiate and handle any abnormal close event or error leading to it, as per WS Spec, but there might be cases where you simply want the socket to exit as if it was a normal event, even if it was abruptly closed or another exception was raised. In those cases you can define the terminate callback and return <code>exit(:normal)</code> from it.</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">def terminate(reason, state) do 
  IO.puts(\nSocket Terminating:\n#{inspect reason}\n\n#{inspect state}\n") 
   exit(:normal) 
end
</code></pre>
</blockquote> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="210337" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/websockex-an-elixir-websocket-client/4733/50">Post #49</a>
	                </div>
	            </div>
              <div id="likers-container-210337" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="210337"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #49"></div>
  </section>
</div>
    <div class="postbit" id="210401" data-post-id="210401">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="AlchemistCamp" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/AlchemistCamp/120/8823_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  AlchemistCamp
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve implemented a terminate very similar to that one. It gets executed if I cut the web connection after connecting but not if the connection is off when <code>start_link()</code> is called. In both cases, this leads to taking down the whole process and its supervisors.</p>
<p>The behavior I want instead is to just keep trying to reconnect to the 3rd party endpoint periodically.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="210401" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/websockex-an-elixir-websocket-client/4733/51">Post #50</a>
	                </div>
	            </div>
              <div id="likers-container-210401" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="210401"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #50"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/4733/load_more?page=6">Load more posts (3 remaining)</a>
</div></template></turbo-stream>