Coldfusion 10-Chat de Live One on One con Websockets
coldfusion-10 livechat (3)
¿Alguien sabe de algún ejemplo o página a la que pueda acceder que implemente un chat de Live on one usando los Websockets CF10? Todos los ejemplos que encontré en la red fueron los de los chats grupales en los que los usuarios se suscriben a un determinado canal. Lo necesito para que haya muchas instancias de chat uno a uno, como el funcionamiento de un Chat de Ayuda en Vivo que se ve muy a menudo en los sitios web que le permiten chatear con uno de los agentes de soporte. Se agradece cualquier ayuda y esperamos que haya ejemplos (CF y JS).
Ben Nadel tiene un buen artículo sobre el uso de websockets de CF10 para enviar un mensaje a un usuario objetivo . Incluso agregó un buen video de demostración. Esto podría ser lo que está buscando o al menos podría ayudarlo a comenzar.
Aquí hay un código de muestra que actualmente está funcionando para mí.
En lugar de utilizar el atributo subscribeTo
, use la función js para suscribir al usuario y pasar algunos valores de encabezado. Estos encabezados se pueden usar como filtros en la publicación de llamadas usando el selector
Ejemplo:
<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>
Al principio estaba pensando en implementar algo similar, pero a partir de ahora hay algunas limitaciones rudimentarias en CF10 que me desvían de seguir investigando.
- Falta asistencia de WSS, ver: ¿CF10 es compatible con websocket wss seguro?
- Websocket no funciona en un entorno de clúster, consulte: https://groups.google.com/forum/#!topic/houcfug/M7YQQyrBTaQ
Buscaría en cualquier otro lugar cualquier solución seria de chat en vivo uno a uno, tal vez Socket.IO en NodeJS o Java
WSS puede venir en CF11. No estoy seguro.