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
Odpowiedz
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ąć.
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
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>
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ń.
- wsparcie WSS brakuje, patrz: Does CF10 support secure websocket wss?
- 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.
- 1. Jeden DAO na klasę "kontener" lub jeden DAO na stół?
- 2. Jeden SQLiteConnection na wątek?
- 3. Hibernacja generuje kwerendy m + 1 w trybie jeden-na-jeden
- 4. Hibernacja jeden do zera lub jeden mapowanie
- 5. ColdFusion 10 Active Directory Authentication
- 6. HttpWebRequest jeden serwer proxy i jeden nie
- 7. Jeden zero/jeden związek (kod pierwszy)
- 8. Dołącz jeden do wielu i pobierz jeden wynik
- 9. Tworzenie tabel PostgreSQL + relacje - PROBLEMY z relacjami - JEDEN TO JEDEN
- 10. Jeden wątek na klienta. Wykonalny?
- 11. Jeden plik dziennika na uruchomienie z log4j
- 12. Relacja EF jeden na dwa
- 13. Kilku delegatów na jeden obiekt?
- 14. tylko jeden wiersz z sqlalchemy
- 15. Odejmij jeden dzień z datetime
- 16. Pobierz jeden wiersz na identyfikator konta z listy
- 17. MySQL - wybierz jeden wiersz - następnie jeden następny i jeden poprzedni względny do wybranego
- 18. jeden-do-wielu z Dołącz Tabela
- 19. Przenieś się jeden układ z miękkiej klawiatury, ale zachować jeden na dole
- 20. Coldfusion 10 returnformat = "JSON" dodawanie znaków
- 21. Powtarzalny problem z wydajnością CFQUERYPARAM w Coldfusion 10
- 22. Aktualizacja ColdFusion 10 Zabił mojego administratora
- 23. Czy w ServletContext jest jeden na aplikację internetową lub jeden na JVM?
- 24. git rebase jeden commit
- 25. klasa A ma jeden parametr, ale typ B ma jeden:
- 26. Zaznacz tylko jeden ToolStripMenuItem
- 27. Łączenie list w jeden
- 28. Jak mieć 2 pagery w jqgridie jeden na górze i jeden na dole?
- 29. SQL PIVOT: Jeden do wielu
- 30. Flag wszystkie ale jeden duplikaty na liście
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
Tak, ale potrzebuję znaleźć czas, aby najpierw zrzucić kod dowodu z koncepcji. Daj mi około 24h, a ja wrócę do ciebie. –
Świetnie! Dzięki! Naprawdę ciężko jest znaleźć na to dobry przykład. – Guest