Como implementar comunicação servidor -> cliente c/ web2py?

27 views
Skip to first unread message

Felipe Marcos

unread,
Nov 9, 2017, 6:49:06 AM11/9/17
to web2py-users-brazil
Bom dia senhores,

Estou em um cenário que é necessário implementar websocket, tenho API lado servidor que escuta um sistema de telefonia e quero que os agentes se conectem a essa API fiquem escutando , assim a API envie o evento correspondente ao agente conectado.

Pesquisei muito em como implementar isso, pensei em socket, porém não tive muito sucesso em minhas pesquisas.

Gostaria de saber se alguém já teve um cenário parecido, ou tenha experiência e possa me ajudar.

É possível reproduzir esse cenário em python/web2py ? 

Carlos Costa

unread,
Nov 9, 2017, 7:56:48 AM11/9/17
to web2py-us...@googlegroups.com
A comunicação websocket em si é fácil fazer no web2py.
Só não está documentada no livro ainda.

Mas o arquivo fonte (web2py/gluon/contrib/websocket_messaging.py) está documentado o suficiente.

Basicamente são 2 passos:
1 - instalar tornado
2 - iniciar esse script

Aí você já pode usar a função websocket_send no web2py para enviar mensagens ao cliente.
No cliente pode capturar as mensagens com $.web2py.web2py_websocket através de callback

--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--


Carlos J. Costa
Cientista da Computação  | BS Computer Science
Esp. Gestão em Telecom   |
PgC Telecom Mangement
<º))><

Felipe Marcos

unread,
Nov 9, 2017, 8:36:20 AM11/9/17
to web2py-users-brazil
Carlos muito obrigado, já testei o script aqui e criei uma aplicação, porém ficou uma duvida tenho um cenário assim

Esse meu evento escuta 15 agentes e cada um tem um numero

Tenho 15 agentes conectados porém só quero enviar para o agente a informa correspondente a ele, como eu faria esse filtro para enviar via ws e o cliente receber ?

Cada um teria um grupo com seu numero e no meu script enviaria a mensagem para o grupo correspondente ao numero dele  ?  

Carlos Costa

unread,
Nov 9, 2017, 8:47:43 AM11/9/17
to web2py-us...@googlegroups.com
Sim, cada um com um grupo.
No carregamento da página você pode injetar na criação do cliente o código do grupo que você vai pegar ou criar de alguma forma.
Se é um usuário logado, pode user o id ou username dele por exemplo.

websocket_send('http://127.0.0.1:8888', 'Hello World', 'mykey', '{{=auth.user.id}}')

--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Felipe Marcos

unread,
Nov 9, 2017, 9:01:58 AM11/9/17
to web2py-users-brazil
Carlos novamente muito obrigado! realizei mais teste e deu certo o grupo, a ideia é logar o numero do agente que vai ser único e enviar os eventos para ele atualizando na tela.

Eu faço tudo isso via banco de dados e disparando ações no asterisk e aguardando resposta, porém quero criar um "proxy" no meio e deixar tudo realTime por questão de performance também né.

Fiz uma pergunta aqui sobre webservice e você me respondeu, alias muito obrigado! implementei ele e criei minha própria chave de autenticação, esse é o meu metodo de cliente -> servidor
agora estou implementando esse servidor -> cliente.

Teria uma forma de na minha aplicação que envia os eventos saber quem está conectado ? 

Carlos Costa

unread,
Nov 9, 2017, 9:45:41 AM11/9/17
to web2py-us...@googlegroups.com
Parece ser uma aplicação muito legal, cara.

"Teria uma forma de na minha aplicação que envia os eventos saber quem está conectado ? "
Não etendi.

--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-users-brazil@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Felipe Marcos

unread,
Nov 13, 2017, 7:41:36 AM11/13/17
to web2py-users-brazil
"Teria uma forma de na minha aplicação que envia os eventos saber quem está conectado ? "
Não etendi.

R: Eu que formulei mal a pergunta mais eu tratei no código, só mandei evento para quem está online.

Obrigado pela ajuda!



Reply all
Reply to author
Forward
0 new messages