2013-05-24 15 views
7

Czy ktoś wie o jakichkolwiek przykładach lub stronach, do których mogę przejść, aby zaimplementować Live na jednym czacie za pomocą sieci Web CF10? Wszystkie przykłady, które znalazłem w Internecie, to te z czatów grupowych, w których użytkownicy subskrybują określony kanał. Potrzebuję go, aby mogło istnieć wiele instancji na jeden czat, na przykład jak działa Czat Pomocy na żywo, który często widuje się na stronach internetowych umożliwiających czat z jednym z agentów pomocy technicznej. Każda pomoc jest doceniana i mamy nadzieję, że będą przykłady (CF i JS).Coldfusion 10 - Live Jeden na jeden czat z Websockets

+0

Ktoś ma jakiś pomysł? Początkowo myślałem o stworzeniu jednego kanału czatu i dla każdego zainicjowanego przez klienta czatu, stworzyłem go na subchanecie czatu, jak chat.chat1 lub cokolwiek innego. Wtedy strona agenta połączy się z tym kanałem, więc będzie to jak rozmowa jeden-na-jeden, ale nie wiem, czy to jest właściwy sposób. Jak robią to inni ludzie? – Guest

+0

Tak, ale potrzebuję znaleźć czas, aby najpierw zrzucić kod dowodu z koncepcji. Daj mi około 24h, a ja wrócę do ciebie. –

+0

Świetnie! Dzięki! Naprawdę ciężko jest znaleźć na to dobry przykład. – Guest

Odpowiedz

2

Ben Nadel ma fajny artykuł na temat używania gniazd internetowych CF10 dla pushing a message to a target user. Dodał nawet fajne wideo demo. To może być to, czego szukasz lub przynajmniej możesz pomóc Ci zacząć.

+0

Dzięki Jan! Wygląda naprawdę interesująco i przeczyta o tym.Miej tylko nadzieję, że zadziała w scenariuszu Czat na żywo, w którym użytkownik jest po prostu przypadkową osobą łączącą się z agentem. – Guest

1

Oto przykładowy kod, który aktualnie działa dla mnie.

Zamiast używać atrybutu subscribeTo, należy użyć funkcji js w celu zasubskrybowania użytkownika i przekazania niektórych wartości nagłówka. Nagłówki te mogą być następnie wykorzystane jako filtry na wezwanie publikuje wykorzystaniem selector

Przykład:

<cfwebsocket name="ChatSocket" onOpen="openHandler" onMessage="msgHandler" onError="errHandler"> 

<script> 
    function openHandler(){ 
     //Subscribe to the channel, pass in headers for filtering later 
     ChatSocket.subscribe('chatChannel',{name: '#Session.Auth.FirstName#', UserID: '#Session.Auth.UserID#', AccountID: '#Session.Auth.AccountID#' }); 
    } 

    function publish(txt, userID){ 
     var msg = { 
      AccountID: "#Session.Auth.AccountID#", 
      publisher: '#Session.Auth.UserID#', 
      id: userID, 
      message: converthtml(txt) 
     }; 
     //When including headers, the "selector" is where you will filter who it goes to. 
     var headers = { 
      AccountID: "#Session.Auth.AccountID#", 
      publisher: '#Session.Auth.UserID#', 
      id: userID, 
      selector: "UserID eq '"+userID+"' and AccountID eq '#Session.Auth.AccountID#'" 
     }; 
     ChatSocket.publish('chatChannel',msg, headers); 

    } 

    function msgHandler(message){ 
     console.log(message); 
    } 

    function errHandler(err){ 
     console.log(err); 
    } 
</script> 
1

Początkowo myślałem o wdrażaniu coś podobnego, ale istnieją pewne szczątkowe ograniczenia CF10 już teraz, że objazdów mnie od dalszych badań.

  1. wsparcie WSS brakuje, patrz: Does CF10 support secure websocket wss?
  2. websocket nie działa w środowisku klastrowym, zobaczyć: https://groups.google.com/forum/#!topic/houcfug/M7YQQyrBTaQ

szukałbym gdzie indziej dla każdego poważnego jeden-na-jeden czat rozwiązanie, być może Socket.IO on NodeJS lub Java

WSS może pojawić się w CF11. Nie jestem pewny.

Powiązane problemy