That is partially correct. I am not creating a new socket each time it is called - only one is every made during the lifetime of the application. The check to see if the socket is open is really only there in the event that the user starts sending events before the connection has been established, but then I simply continue checking thereafter. If you wanted to do anything when the socket is closed you would do so in that service. You could also add a method to the returned interface allowing a user to close the socket; in my case, the user has to navigate away in order to close their connection.

There is some code in there that keeps track of whether the socket is open before I switched to using socket.onopen() directly, which I should remove for clarity. Hope this helps!

- Sonny

On 02/06/2014 01:56 AM, Yonatan Kra wrote:
Hi,
Thanks for your answer and example.
If I understand your code correctly, what you are doing is to load the socket service in a controller and every time check if it was activated before. If it was, call the callback. If it wasn't, open a new socket with the callback. Is that it? And there's no need to worry about "destroy" and such stuff here?
Thanks again


On Thu, Feb 6, 2014 at 1:17 AM, Sonny Michaud <[email protected] <mailto:[email protected]>> wrote:

    I have done something very similar, but using SockJS instead of
    Socket.IO.  They have very similar interfaces, and, having used
    both, I have come to prefer the former.

    Your state will be persistent in the service, so switching view
    should not cause problems.  You can see my implementation here if
    you are interested:

    
https://github.com/sonnym/fics_web_interface/blob/master/app/assets/js/services/proxy.js

    This service handles the communication between itself and the
    server when first run, then returns an object that allows other
    services (or controllers) to send messages or register handlers
    for messages that will then be dispatched upon arrival.  One
    important thing to note is that the dispatch occurs in a
    $rootScope.$apply() call to ensure that the changes propagate
    through the application.

    - Sonny


    On 02/05/2014 05:04 PM, Yonatan Kra wrote:

        Hi,
        I'm pretty new to Angular (about 2 weeks of trial and error)
        and it looks amazing so far.
        I think I'm now ready to dive into complex integration with
        socket.io <http://socket.io>.
        I've created a service that creates a port listener (something
        very simple).
        I have 2 questions about it:
        1) The service needs to be called by a controller.  When I
        switch view, it means I switch a controller.  Does that mean
        each time I switch view (i.e. click a menu item), I destroy
        the listener and create a new one? I believe it's a more basic
        question - what happens to the controller once I switch view -
        is it destroyed?
        2) How would you suggest keeping the connection to the server
        across views? I want to call it once, and it would be active
        as long as the user is in the app.
        Thanks
-- You received this message because you are subscribed to the
        Google Groups "AngularJS" group.
        To unsubscribe from this group and stop receiving emails from
        it, send an email to [email protected]
        <mailto:angular%[email protected]>.

        To post to this group, send email to [email protected]
        <mailto:[email protected]>.
        Visit this group at http://groups.google.com/group/angular.
        For more options, visit https://groups.google.com/groups/opt_out.


-- You received this message because you are subscribed to a topic in
    the Google Groups "AngularJS" group.
    To unsubscribe from this topic, visit
    https://groups.google.com/d/topic/angular/LZo3-S5uOeQ/unsubscribe.
    To unsubscribe from this group and all its topics, send an email
    to [email protected]
    <mailto:angular%[email protected]>.
    To post to this group, send email to [email protected]
    <mailto:[email protected]>.
    Visit this group at http://groups.google.com/group/angular.
    For more options, visit https://groups.google.com/groups/opt_out.


--
You received this message because you are subscribed to the Google Groups "AngularJS" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to