<div dir="ltr">Hello,<div>I checked the docs and indeed sip.js supports GRUU (haven't heard of this before).</div><div>I will try with it.</div><div>Thanks,<br>Takeshi</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Feb 11, 2016 at 6:01 AM, Daniel-Constantin Mierla <span dir="ltr"><<a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    Hello,<br>
    <br>
    if the client UA does GRUU (iirc, jssip supports that, sip.js
    started as a fork of jssip) and you enable that in Kamailio (see
    registrar module), it should be enough that the client UA reconnects
    on websocket for SIP singaling, no need for re-INVITE, unless the
    IP/ports for media stream change. The BYE or other requests within
    dialog will be routed properly to the new contact address after the
    reconnect.<br>
    <br>
    But you have to check with your UA and see how it behaves in order
    to build the proper solution on server side.<br>
    <br>
    Cheers,<br>
    Daniel<div><div class="h5"><br>
    <br>
    <div>On 10/02/16 20:57, mayamatakeshi wrote:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">Hi Daniel,
        <div>originally I was thinking that i should just terminate or
          allow the dialog module to terminate the call if
          websocket:closed happens.</div>
        <div>However, I believe the sip.js library I am using in the
          client will do a re-INVITE after websocket connection is
          reestablished so that requests from the other end will come to
          the right socket so I am thinking in just reduce the dlg
          timeout and if the re-INVITE happens, reset it to its usual
          value.</div>
        <div>I have not checked yet if sip.js does this re-INVITE but I
          believe it is reasonable to assume it does and if it doesn't I
          think it should not be difficult to patch it to do so.</div>
        <div><br>
        </div>
        <div>I will check the other alternatives you mentioned.</div>
        <div>Thank you.</div>
        <div><br>
        </div>
        <div>Regards,</div>
        <div>Takeshi<br>
          <div class="gmail_extra"><br>
            <div class="gmail_quote">On Wed, Feb 10, 2016 at 10:23 PM,
              Daniel-Constantin Mierla <span dir="ltr"><<a href="mailto:miconda@gmail.com" target="_blank"></a><a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>></span>
              wrote:<br>
              <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
                <div bgcolor="#FFFFFF" text="#000000"> Hello Takeshi,<br>
                  <br>
                  so do you expect a re-INVITE after the websocket
                  connection is closed?<br>
                  <br>
                  You may want to check also the dialog keepalive
                  features, it might just be enough to enable it, but of
                  course it may take longer to detect when one leg of
                  the call is gone.<br>
                  <br>
                  Also, typically with PSTN gateways works to set
                  session timers (see sst module).<br>
                  <br>
                  Cheers,<br>
                  Daniel
                  <div>
                    <div><br>
                      <br>
                      <div>On 10/02/16 12:27, mayamatakeshi wrote:<br>
                      </div>
                      <blockquote type="cite">
                        <div dir="ltr">Hi Daniel,
                          <div><br>
                          </div>
                          <div>Yes, that will solve it.</div>
                          <div>Then when i get the in-dialog INVITE i
                            can revert the lifetime back to the original
                            value.</div>
                          <div>Thanks and regards,</div>
                          <div>Takeshi<br>
                            <div class="gmail_extra"><br>
                              <div class="gmail_quote">On Wed, Feb 10,
                                2016 at 5:59 PM, Daniel-Constantin
                                Mierla <span dir="ltr"><<a href="mailto:miconda@gmail.com" target="_blank"></a><a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>></span>
                                wrote:<br>
                                <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
                                  <div bgcolor="#FFFFFF" text="#000000">
                                    Hello,<br>
                                    <br>
                                    perhaps you can just lower the
                                    dialog lifetime in the websocket
                                    event route, then dialog will take
                                    care of sending the BYEs, without
                                    the need to store additional
                                    information in hash table.<br>
                                    <br>
                                    Cheers,<br>
                                    Daniel
                                    <div>
                                      <div><br>
                                        <br>
                                        <div>On 09/02/16 23:37,
                                          mayamatakeshi wrote:<br>
                                        </div>
                                      </div>
                                    </div>
                                    <blockquote type="cite">
                                      <div>
                                        <div>
                                          <div dir="ltr">Hello,
                                            <div>I am using module
                                              websocket and it works
                                              very well.</div>
                                            <div>However I would like to
                                              send BYE to the other end
                                              if event
                                              [websocket:closed]
                                              happens.</div>
                                            <div>From the docs I can see
                                              websocket module itself
                                              doesn't provide for this.</div>
                                            <div><br>
                                            </div>
                                            <div>I was considering doing
                                              something like this:</div>
                                            <div>  - use module htable
                                              to match $si:$sp to
                                              dialogs</div>
                                            <div>  - use
                                              event_route[dialog:start]
                                              to insert dialog info to
                                              my htable under $si:$sp of
                                              Websocket side of the call</div>
                                            <div>  - use
                                              event_route[dialog:end] to
                                              remove dialog info from
                                              htable</div>
                                            <div>  -
                                              use event_route[websocket:closed]
                                              to iterate over entries in
                                              the htable under key
                                              $si:$sp and call dlg_get()
                                              and dlg_bye().</div>
                                            <div><br>
                                            </div>
                                            <div>Obs: in the above,
                                              there is a risk of losing
                                              some dialogs as insertion
                                              in htable cannot be done
                                              atomically, but I am fine
                                              with it as it it not
                                              expected to happen as
                                              WebSocket users would only
                                              infrequently generate
                                              simultaneous calls. </div>
                                            <div><br>
                                            </div>
                                            <div>However before going
                                              with this, I would like to
                                              ask for other possible
                                              approaches.</div>
                                            <div><br>
                                            </div>
                                            <div>Regards,</div>
                                            <div>Takeshi</div>
                                            <div><br>
                                            </div>
                                          </div>
                                          <br>
                                          <fieldset></fieldset>
                                          <br>
                                        </div>
                                      </div>
                                      <pre>_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
<a href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a>
<a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><span><font color="#888888">
</font></span></pre>
                                      <span><font color="#888888"> </font></span></blockquote>
                                    <span><font color="#888888"> <br>
                                        <pre cols="72">-- 
Daniel-Constantin Mierla
<a href="http://twitter.com/#%21/miconda" target="_blank">http://twitter.com/#!/miconda</a> - <a href="http://www.linkedin.com/in/miconda" target="_blank">http://www.linkedin.com/in/miconda</a>
Book: SIP Routing With Kamailio - <a href="http://www.asipto.com" target="_blank">http://www.asipto.com</a>
<a href="http://miconda.eu" target="_blank">http://miconda.eu</a></pre>
                                      </font></span></div>
                                  <br>
_______________________________________________<br>
                                  SIP Express Router (SER) and Kamailio
                                  (OpenSER) - sr-users mailing list<br>
                                  <a href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a><br>
                                  <a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><br>
                                  <br>
                                </blockquote>
                              </div>
                              <br>
                            </div>
                          </div>
                        </div>
                      </blockquote>
                      <br>
                      <pre cols="72">-- 
Daniel-Constantin Mierla
<a href="http://twitter.com/#%21/miconda" target="_blank">http://twitter.com/#!/miconda</a> - <a href="http://www.linkedin.com/in/miconda" target="_blank">http://www.linkedin.com/in/miconda</a>
Book: SIP Routing With Kamailio - <a href="http://www.asipto.com" target="_blank">http://www.asipto.com</a>
<a href="http://miconda.eu" target="_blank">http://miconda.eu</a></pre>
                    </div>
                  </div>
                </div>
              </blockquote>
            </div>
            <br>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    <pre cols="72">-- 
Daniel-Constantin Mierla
<a href="http://twitter.com/#!/miconda" target="_blank">http://twitter.com/#!/miconda</a> - <a href="http://www.linkedin.com/in/miconda" target="_blank">http://www.linkedin.com/in/miconda</a>
Book: SIP Routing With Kamailio - <a href="http://www.asipto.com" target="_blank">http://www.asipto.com</a>
<a href="http://miconda.eu" target="_blank">http://miconda.eu</a></pre>
  </div></div></div>

</blockquote></div><br></div>