rafaelmotta / bematech-printer

🖨 Native desktop socket.io application with integration with bematech termal printers. Tested only with MP4200TH
86 stars 18 forks source link

Documentação de código #5

Open andrevandal opened 7 years ago

andrevandal commented 7 years ago

E aí, blz? Tu poderia documentar um pouco mais o código em si? Queria fazer contribuir, mas o projeto parece meio desorganizado para quem está de fora ajudar... Seria bom colocar um style guide para manter sempre o mesmo estilo de desenvolvimento.

rafaelmotta commented 7 years ago

Realmente. Na verdade esse projeto fiz de forma rápida para uma necessidade que tive há algum tempo atrás. Minha ideia era dar uma refatorada no código e fazer um dicionário de comandos baseado no modelo da impressora, pra ser algo mais flexível e fácil para outras pessoas adicionarem mais comandos.

Vou dar uma pensada nessa nova estrutura e um guia pra galera poder contribuir.

andrevandal commented 7 years ago

Vou criar umas comits com umas ideias pra ir te ajudando... Tô sofrendo muito com um servidor local que fica dando polling no mysql HAHAHAH Não acha interessante fazer a aplicação como um servidor sem usar interface gráfica e criar um fork só para a interface gráfica para ajudar no gerenciamento? Já que, depois que está em produção, não é tão necessário tem um app rodando 24/7 só para mostrar o que é impresso. O app poderia ficar como um cliente que só lê o banco de dados. Se for possível sugerir, poderíamos reescrever o código usando o Restify como HTTP Handler junto com o socket.io e usar o RethinkDB como database em realtime.

rafaelmotta commented 7 years ago

Então, a ideia desse projeto é a seguinte:

Enviar a requisição para imprimir de um serverside é complicado, pois basicamente você teria que abrir uma porta de seu roteador para o serverside ter acesso a sua impressora. Isso envolve uma configuração específica no teu roteador e além disso a necessidade de ter um programa rodando por baixo (como tenho hoje). Além disso, não é seguro abrir uma porta do seu roteador para qualquer dispositivo da web.

A interface gráfica na verdade é totalmente opcional e só exibe os logs.. (tanto é que ela já abre minimizada).

Minha ideia com esse projeto foi tornar possível imprimir sem instalar drivers e outras configurações, a ideia é só rodar esse programinha que gerei (que não precisa nem instalar) e através de uma página só conectar e já estar imprimindo.

andrevandal commented 7 years ago

O complicado é que implementar impressão direto do browser é complicada. Se você estiver em rede local, não há necessidade de abrir porta no modem nem nada, já que em rede local, todas as portas ficam abertas. Se você deixar a aplicação atual como servidor websocket, vai precisar implementar alguma camada de segurança para pessoas não autorizadas acessarem a rede e imprimirem o que quiserem. Além disso, se usar uma comunicação browser x servidor via Socket.io, acho que já soluciona o objetivo que almeja, não acha?

rafaelmotta commented 7 years ago

Com certeza... na verdade o que a gente pode fazer é dividir esse pacote... um totalmente standalone que funcionaria no seu caso e outro pra integrar pra uma solução web.. acho que é um bom ponto de partida

andrevandal commented 7 years ago

Sim, acredito nisso mesmo. Porque quanto mais simples ficar o projeto, melhor. Falando nisso, porque escolheu xml para os modelos? hahaha