<div dir="ltr"><div dir="auto"><div dir="ltr">I am having trouble understanding how to receive callbacks on protocols beyond the first one which is the http protocol right?<div><br></div><div dir="auto"><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:"jetbrains mono";font-size:9.8pt"><span style="font-size:9.8pt;color:rgb(204,120,50)">static const struct </span><span style="font-size:9.8pt;color:rgb(181,182,227)">lws_protocols </span><span style="font-size:9.8pt">protocols[] = {</span><br></pre><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:"jetbrains mono";font-size:9.8pt">        { <span style="color:rgb(106,135,89)">"http"</span><span style="color:rgb(204,120,50)">, </span>callback_test_one<span style="color:rgb(204,120,50)">, </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">, </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">, </span>}<span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">        </span>{ <span style="color:rgb(106,135,89)">"connection_status"</span><span style="color:rgb(204,120,50)">, </span>callback_test_two<span style="color:rgb(204,120,50)">, </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">, </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">, </span>}<span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">        </span>{ <span style="color:rgb(106,135,89)">"client_download"</span><span style="color:rgb(204,120,50)">, </span>callback_test_three<span style="color:rgb(204,120,50)">, </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">, </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">, </span>}<span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">        </span>{ <span style="color:rgb(144,139,37)">NULL</span><span style="color:rgb(204,120,50)">, </span><span style="color:rgb(144,139,37)">NULL</span><span style="color:rgb(204,120,50)">, </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">, </span><span style="color:rgb(104,151,187)">0 </span>}<br></pre><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:"jetbrains mono";font-size:9.8pt">};</pre></div><div dir="auto"><br></div><div dir="auto">Only my LWS_CALLBACK_PROTOCOL_INIT is called for the second and third one. The other callbacks are never reached.</div><div dir="auto"><br></div><div dir="auto"><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:"JetBrains Mono";font-size:9.8pt"><span style="color:rgb(204,120,50)">static int<br></span><span style="color:rgb(255,198,109)">callback_test_two</span>(<span style="color:rgb(204,120,50)">struct </span><span style="color:rgb(181,182,227)">lws </span>*wsi<span style="color:rgb(204,120,50)">, enum </span><span style="color:rgb(181,182,227)">lws_callback_reasons </span>reason<span style="color:rgb(204,120,50)">,void </span>*user<span style="color:rgb(204,120,50)">, void </span>*in<span style="color:rgb(204,120,50)">, </span><span style="color:rgb(185,188,209)">size_t </span>len)<br>{<br><br>    <span style="color:rgb(204,120,50)">switch </span>(reason) {<br><br>        <span style="color:rgb(204,120,50)">case </span><span style="color:rgb(152,118,170);font-style:italic">LWS_CALLBACK_PROTOCOL_INIT</span>:<br>            <span style="color:rgb(144,139,37)">lwsl_user</span>(<span style="color:rgb(106,135,89)">"%s: (LWS_CALLBACK_PROTOCOL_INIT) testing for response</span><span style="color:rgb(204,120,50)">\n</span><span style="color:rgb(106,135,89)">"</span><span style="color:rgb(204,120,50)">, </span>__func__)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">            break;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">        case </span><span style="color:rgb(152,118,170);font-style:italic">LWS_CALLBACK_WSI_CREATE</span>:<br>            <span style="color:rgb(144,139,37)">lwsl_user</span>(<span style="color:rgb(106,135,89)">"%s: (LWS_CALLBACK_WSI_CREATE) testing for response</span><span style="color:rgb(204,120,50)">\n</span><span style="color:rgb(106,135,89)">"</span><span style="color:rgb(204,120,50)">, </span>__func__)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">            break;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">        case </span><span style="color:rgb(152,118,170);font-style:italic">LWS_CALLBACK_CLIENT_CONNECTION_ERROR</span>:<br>            <span style="color:rgb(144,139,37)">lwsl_user</span>(<span style="color:rgb(106,135,89)">"%s: (LWS_CALLBACK_CLIENT_CONNECTION_ERROR) testing for response</span><span style="color:rgb(204,120,50)">\n</span><span style="color:rgb(106,135,89)">"</span><span style="color:rgb(204,120,50)">, </span>__func__)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">            break;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">        case </span><span style="color:rgb(152,118,170);font-style:italic">LWS_CALLBACK_CLIENT_RECEIVE</span>:<br>            <span style="color:rgb(144,139,37)">lwsl_user</span>(<span style="color:rgb(106,135,89)">"%s: (LWS_CALLBACK_CLIENT_RECEIVE) testing for response</span><span style="color:rgb(204,120,50)">\n</span><span style="color:rgb(106,135,89)">"</span><span style="color:rgb(204,120,50)">, </span>__func__)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">            break;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">        case </span><span style="color:rgb(152,118,170);font-style:italic">LWS_CALLBACK_CLIENT_ESTABLISHED</span>:<br>            <span style="color:rgb(144,139,37)">lwsl_user</span>(<span style="color:rgb(106,135,89)">"%s: (LWS_CALLBACK_CLIENT_ESTABLISHED) testing for response</span><span style="color:rgb(204,120,50)">\n</span><span style="color:rgb(106,135,89)">"</span><span style="color:rgb(204,120,50)">, </span>__func__)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">            break;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">        case </span><span style="color:rgb(152,118,170);font-style:italic">LWS_CALLBACK_CLIENT_WRITEABLE</span>:<br>            <span style="color:rgb(144,139,37)">lwsl_user</span>(<span style="color:rgb(106,135,89)">"%s: (LWS_CALLBACK_CLIENT_WRITEABLE) testing for response</span><span style="color:rgb(204,120,50)">\n</span><span style="color:rgb(106,135,89)">"</span><span style="color:rgb(204,120,50)">, </span>__func__)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">            break;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">        case </span><span style="color:rgb(152,118,170);font-style:italic">LWS_CALLBACK_CLIENT_CLOSED</span>:<br>            <span style="color:rgb(144,139,37)">lwsl_user</span>(<span style="color:rgb(106,135,89)">"%s: (LWS_CALLBACK_CLIENT_CLOSED) testing for response</span><span style="color:rgb(204,120,50)">\n</span><span style="color:rgb(106,135,89)">"</span><span style="color:rgb(204,120,50)">, </span>__func__)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">        case </span><span style="color:rgb(152,118,170);font-style:italic">LWS_CALLBACK_WSI_DESTROY</span>:<br>            <span style="color:rgb(144,139,37)">lwsl_user</span>(<span style="color:rgb(106,135,89)">"%s: (LWS_CALLBACK_WSI_DESTROY) testing for response</span><span style="color:rgb(204,120,50)">\n</span><span style="color:rgb(106,135,89)">"</span><span style="color:rgb(204,120,50)">, </span>__func__)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">            break;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">        default</span>:<br>            <span style="color:rgb(204,120,50)">break;<br></span><span style="color:rgb(204,120,50)">    </span>}<br>    <span style="color:rgb(204,120,50)">return </span><span style="color:rgb(104,151,187)">0</span><span style="color:rgb(204,120,50)">;<br></span>}</pre></div><div>(The third is identical to this one above.)</div><div dir="auto"><br></div><div dir="auto">I look in the minimal-examples ws-client and ws-server to see if there was an example. All of those use only one protocol.</div><div dir="auto"><br></div><div dir="auto">The first protocol in my list always works fine but the other two never progress past the above issue.</div><div dir="auto"><br></div><div dir="auto">Am i using protocols wrong or expecting something other than their intended use?</div><div dir="auto"><br></div><div dir="auto">If so what is the way to register different callback functions/protocols for their client/server to utilize?</div><div dir="auto"><br></div><div>thank you for your time.</div></div></div>
</div>