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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="grych" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/120/5610_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  grych
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Drab</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="dgmcguire" data-post="73" data-topic="16445">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dgmcguire/48/12192_2.png" class="avatar"> dgmcguire:</div>
<blockquote>
<p>keep all of your state on the server.</p>
</blockquote>
</aside>
<p>This reminds me the idea which was never implemented, but it might be good to remind (there are some notes about it in Drab thread on this forum, but it is too long to be useful as a data source).</p>
<h4><a name="p-97111-what-happens-while-disconnection-during-handler-process-running-1" class="anchor" href="#p-97111-what-happens-while-disconnection-during-handler-process-running-1" aria-label="Heading link" rel="nofollow"></a>What happens while disconnection during handler process running</h4>
<p>In normal case, the event handler process (the one which runs when you operate the JS even with <code>drab-click=handler_name</code>) dies, as it is linked to the drab genserver, which is linked to the channel process.<br>
If you want your event handler to persist, the best way is to run the background process and pass the <code>socket</code> to it. Imagine that disconnection happens when this background process operates:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">poke socket, status: "Starting DB update..."
# perform long DB operation
poke socket, status: "DB update finished."
# more
</code></pre>
<p><code>poke</code> returns <code>{:error, :disconnected}</code> in case of disconnection so you should handle it and react accordingly.</p>
<p>But what if, during the long DB operation, the client will disconnect and reconnect again? In this case, Drab still return <code>:disconnected</code> on the second poke, as after reconnection the brand new socket is used.</p>
<h4><a name="p-97111-idea-should-drab-handle-this-2" class="anchor" href="#p-97111-idea-should-drab-handle-this-2" aria-label="Heading link" rel="nofollow"></a>Idea: should Drab handle this?</h4>
<p>The idea was to use <a href="https://hexdocs.pm/drab/Drab.Browser.html#id/1" rel="noopener nofollow ugc">the unique browser id</a> to identify the connections</p>
<ul>
<li>sockets are stored somewhere on the server and linked to the browser IDs</li>
<li>instead of <code>socket</code>, all Drab functions receives own data structure (<code>%Drut{browser_id: binary}</code>) with the ID</li>
<li>normal event handlers operates as previously, but introduce the new event handler function, the task, which is not linked with channel process anymore</li>
<li>on disconnect, Drab removes the socket from the global browser_id =&gt; [socket] storage (note that it may be more than 1 socket for the browser)</li>
<li>Drab functions returns <code>{:error, :disconnected}</code> only when there is no more sockets on the list for this id</li>
</ul>
<p>After this, Drab functions may be changed to the way that they queue changes to the frontend. Consider:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">poke drut, status: "Starting DB update..."
# perform long DB operation
poke drut, status: "Step 1 finished."
# perform long DB operation
poke drut, status: "Step 2 finished."
# perform long DB operation
poke drut, status: "All steps completed."
# more
</code></pre>
<p>Let’s say we don’t really care if the status was updated - db changes are more important - so we do not check the <code>poke</code> return value. All the changes will be applied when the browser reconnects. You could even close the browser and, after the next connection, have a correct status of the job.</p>
<p>Of course in this case we need to have a cleaning mechanism, with timeouts and so on.</p>
<p>I’ve announced this idea here before, but the answer of the community was - not worth to do it, if you want to have it, handle it yourself. So I postponed the implementation to the future versions of Drab. But I still like the idea. Imagine you are coming from the other world (lets say Rails) and have persistent task with live status updates for free with that ease.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="97111" 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/54-elixirconf-us-2018-closing-keynote-chris-mccord/16445/76">Post #75</a>
	                </div>
	            </div>
              <div id="likers-container-97111" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="97111"
                     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 #75"></div>
  </section>
</div>
    <div class="postbit" id="97128" data-post-id="97128">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="grych" data-post="75" data-topic="16445">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/48/5610_2.png" class="avatar"> grych:</div>
<blockquote>
<p>After reconnect, new process gathers the data from the client, so if anything were changed before disconnection, we have it in a new process.</p>
</blockquote>
</aside>
<p>in this scenario you’re treating a client as being more reliable than a GenServer.  With a GenServer you control the environment and the code - you do not control that with the client.  You can make environments you control as robust as necessary, while you have very little control over how reliable some client is going to be.</p>
<aside class="quote no-group" data-username="grych" data-post="75" data-topic="16445">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/48/5610_2.png" class="avatar"> grych:</div>
<blockquote>
<p>Keeping on the server means that your data must persist the disconnection. So you need to keep it somewhere, handling timeouts. For me that was more difficult!</p>
</blockquote>
</aside>
<p>not necessarily, one of the ways I handle websocket disconnections in texas is by simply falling back HTTP requests.  That means I don’t have to make any assumptions about the client on disconnect, I just clean everything up as if they intended on disconnecting - at any point in the future the client can state their intent of continued use by sending another request, which you can use to re-setup their environment as if they were a new client all together.</p>
<p>This does mean that if they have a bad connection they will not see updates pushed up from the server, but if they have a bad connection that might be the case no matter what your strategy is for handling poor connections</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="97128" 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/54-elixirconf-us-2018-closing-keynote-chris-mccord/16445/77">Post #76</a>
	                </div>
	            </div>
              <div id="likers-container-97128" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="97128"
                     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 #76"></div>
  </section>
</div>
    <div class="postbit" id="97170" data-post-id="97170">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="grych" data-post="71" data-topic="16445">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/48/5610_2.png" class="avatar"> grych:</div>
<blockquote>
<p>system needs to replace the whole <code>form_for</code> and refreshes the <code>&lt;input&gt;</code> s so the value user already set is gone.</p>
</blockquote>
</aside>
<p>Ah I thought <code>form_for</code>’s you special cased to allow more detailed setting?  Guess that’s why I never noticed it since it disables the whole thing when it is testing so I generally used unpoly for real-time error checks, that would be a good feature to get in to drab though!</p>
<aside class="quote no-group" data-username="dgmcguire" data-post="73" data-topic="16445">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dgmcguire/48/12192_2.png" class="avatar"> dgmcguire:</div>
<blockquote>
<p>I think this problem is a lot less difficult to solve if you keep all of your state on the server.</p>
</blockquote>
</aside>
<p>This was how Wt in C++ worked, the client was treated as literally nothing more but a viewport and an input event dispatcher back to the server, but it means you have to hold a lot more active data in memory as well.</p>
<hr>
<p><a class="mention" href="/u/grych" rel="nofollow">@grych</a> You could also add another process/actor between the socket and the rest of the system to cache <em>everything</em> for any specific page view (identified by a unique UUID or token or so?) perhaps?  It just passes on most things and cache’s them as necessary until it gets confirmation that the client is up to date with that point?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="97170" 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/54-elixirconf-us-2018-closing-keynote-chris-mccord/16445/78">Post #77</a>
	                </div>
	            </div>
              <div id="likers-container-97170" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="97170"
                     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 #77"></div>
  </section>
</div>
    <div class="postbit" id="97174" data-post-id="97174">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="78" data-topic="16445">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>but it means you have to hold a lot more active data in memory as well.</p>
</blockquote>
</aside>
<p>I’m curious how this holds up in production - right now it’s not a problem I’m trying to solve because texas keeps a cached version of only the dynamic parts in AST so it’s negligible how much memory is used until you have many connected clients, but even with a huge number of clients those cached bits are broken apart and labeled, so each part could just as easily point towards a [newest state @ xyz time] (a real impl wouldn’t use time as the uid) that all N clients cache points too and then on update the first client to update creates a new [newest state <span class="mention">@xyz</span>+1] for the rest of the clients to point too once they’re done sending updates to the client</p>
<p>so it certainly seems there are compression methods available for the cache held on the serverside, but in practice I wonder if this is something that’s likely to ever be needed</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="97174" 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/54-elixirconf-us-2018-closing-keynote-chris-mccord/16445/79">Post #78</a>
	                </div>
	            </div>
              <div id="likers-container-97174" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="97174"
                     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 #78"></div>
  </section>
</div>
    <div class="postbit" id="97181" data-post-id="97181">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="dgmcguire" data-post="79" data-topic="16445">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dgmcguire/48/12192_2.png" class="avatar"> dgmcguire:</div>
<blockquote>
<p>I’m curious how this holds up in production - right now it’s not a problem I’m trying to solve because texas keeps a cached version of only the dynamic parts in AST so it’s negligible how much memory is used until you have many connected clients, but even with a huge number of clients those cached bits are broken apart and labeled, so each part could just as easily point towards a [newest state @ xyz time] (a real impl wouldn’t use time as the uid) that all N clients cache points too and then on update the first client to update creates a new [newest state <span class="mention">@xyz</span>+1] for the rest of the clients to point too once they’re done sending updates to the client</p>
</blockquote>
</aside>
<p>In Wt in C++ the ‘GUI’ overhead was similar to a desktop GUI program, a set of widgets you put together and so forth (it <em>very</em> owned it’s webpage), but it was still quite lightweight as desktop programs often are when using base interfaces like that, however holding your own data in the whole setup could definitely get a bit…heavy at times, even to just know the state of it all.  Wt had issues scaling above 10k connections on a single server (although this was back in the mid-2000’s when I used it heavily), and it wasn’t even because of connection overhead but rather just memory.</p>
<p>If the server-side of the DOM is broken up well enough and it only remembers the dynamic parts including recursively (since templates can call templates and so forth) including that other templates can be changed and loaded over time then it could indeed be made very efficient just by holding on to a set of minimal observation mappings.  Thus I’m quite curious to see what a modern style of server-ownership could do compared to the old style event system of the old Wt GUI style API’s, it could work very well.  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="dgmcguire" data-post="79" data-topic="16445">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dgmcguire/48/12192_2.png" class="avatar"> dgmcguire:</div>
<blockquote>
<p>so it certainly seems there are compression methods available for the cache held on the serverside, but in practice I wonder if this is something that’s likely to ever be needed</p>
</blockquote>
</aside>
<p>As it’s said, You don’t Need it Until you Do.  ^.^</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="97181" 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/54-elixirconf-us-2018-closing-keynote-chris-mccord/16445/80">Post #79</a>
	                </div>
	            </div>
              <div id="likers-container-97181" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="97181"
                     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 #79"></div>
  </section>
</div>
    <div class="postbit" id="97182" data-post-id="97182">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="80" data-topic="16445">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>If the server-side of the DOM is broken up well enough and it only remembers the dynamic parts including recursively (since templates can call templates and so forth)</p>
</blockquote>
</aside>
<p>this is something that I think is possible in texas, just not impl’d yet - if a sub-template is dynamic (think facebook posts on a timeline) then the top-level dynamic property (the timeline) could just cache a list of HTML-AST and on a top level diff that would allow me to skip tons of sub-templates (and their sub-templates as a consequence) to get a diff to the overall structure - it would also give me pretty easy targets for each client on the same page referencing the same cache (for the parts that don’t have context specific rendering rules)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="97182" 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/54-elixirconf-us-2018-closing-keynote-chris-mccord/16445/81">Post #80</a>
	                </div>
	            </div>
              <div id="likers-container-97182" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="97182"
                     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 #80"></div>
  </section>
</div>
    <div class="postbit" id="97244" data-post-id="97244">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="grych" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/120/5610_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  grych
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Drab</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="78" data-topic="16445">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>You could also add another process/actor between the socket and the rest of the system to cache <em>everything</em> for any specific page view (identified by a unique UUID or token or so?) perhaps?</p>
</blockquote>
</aside>
<p>Yes, I’ve been thinking about it, but it was in the long-term plans to Drab 2.0. I’d like to combine this with reconnectproof functions which I described before. Maybe Drab should evolve to this direction <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="97244" 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/54-elixirconf-us-2018-closing-keynote-chris-mccord/16445/82">Post #81</a>
	                </div>
	            </div>
              <div id="likers-container-97244" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="97244"
                     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 #81"></div>
  </section>
</div>
    <div class="postbit" id="97245" data-post-id="97245">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="grych" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/120/5610_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  grych
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Drab</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="dgmcguire" data-post="77" data-topic="16445">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dgmcguire/48/12192_2.png" class="avatar"> dgmcguire:</div>
<blockquote>
<p>at any point in the future the client can state their intent of continued use by sending another request, which you can use to re-setup their environment as if they were a new client all together.</p>
</blockquote>
</aside>
<p>I see. I like it!<br>
How would you implement long running processes in Texas? For example, <a href="https://tg.pl/drab#long_running" rel="noopener nofollow ugc">like this one here</a>. The similar stuff was my first usecase to create Drab.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="97245" 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/54-elixirconf-us-2018-closing-keynote-chris-mccord/16445/83">Post #82</a>
	                </div>
	            </div>
              <div id="likers-container-97245" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="97245"
                     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 #82"></div>
  </section>
</div>
    <div class="postbit" id="97247" data-post-id="97247">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Guys the things Chris mentioned about server side, error comings when filling the form, is available in phoenix gh now?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="97247" 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/54-elixirconf-us-2018-closing-keynote-chris-mccord/16445/84">Post #83</a>
	                </div>
	            </div>
              <div id="likers-container-97247" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="97247"
                     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 #83"></div>
  </section>
</div>
    <div class="postbit" id="97272" data-post-id="97272">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="grych" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/120/5610_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  grych
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Drab</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Not yet, AFAIK, but today you may use Texas or Drab to archive the same effect.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="97272" data-batch-url="/posts/batch_likers">
                        3
                      </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/54-elixirconf-us-2018-closing-keynote-chris-mccord/16445/85">Post #84</a>
	                </div>
	            </div>
              <div id="likers-container-97272" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="97272"
                     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 #84"></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/16445/load_more?page=9">Load more posts (6 remaining)</a>
</div></template></turbo-stream>