2

웹 버전 friendlychat 예제를 각도 4 제품군으로 포팅했습니다. 당신은 내 over here 살아있는 것을 볼 수 있고 그것은 잘 작동하는 것 같습니다 ... 나는 곧 opensource를 발표 할 것이다.firebase cloud pub/sub를 사용하여 채팅 응용 프로그램에서 "Someone is typing ..."기능 구현

이제 사용자 A가 실시간으로 입력을 시작하면 사용자 B는 "사용자 A가 타이핑 중입니다 ...."라는 메시지를 보게되는 기능을 구현하려고합니다. 사용자 A가 입력을 중지하면 메시지가 사라집니다. 사용자 A가 직접 입력하는 경우 메시지 A를 보지 않아야합니다.

{ 
    "isTyping":true, 
    "fromDeviceToken": "xxxx" 
} 

을 ... 그리고 단지 중포 기지 실시간을 사용하여 isTyping 필드를 변경 :

난 그냥과 같이 DB에 객체를 가진 고려하고있다.

어떻게하면 좋을까요? 모든 의견/개선? 내 주요 질문은

,

는 중포 기지 클라우드 .. 그래서 만약 DB에 입력 상태를 지속하지 않고이 작업을 수행하는 데 사용할 수 pub/sub trigger 수, 어떻게?

+0

에서 가져온 당신은 명확하게 의미를 '입력됩니다'을 정의 할 수 있습니다. 그들은 타이핑을 시작하고 그들이 타이핑하지 않는 메시지를 보낼 것을 의미합니까? 텍스트를 입력하고 마음을 바꾸고 텍스트를 삭제하려면 어떻게해야합니까? 또한 클라이언트가 해당 노드에서 이벤트를 청취 할 때 입력 상태를 표시 할 때 알 수 있도록 데이터베이스의 노드에 입력 상태를 유지해야합니다. – Jay

+0

나는 실제 작업 예제 코드처럼 더 명확하게 이해할 수 없다고 생각한다. [이 repo] (https://github.com/socketio/socket.io/tree/master/examples/chat)와 [live over here ] (https://socket.io/demos/chat/)는 내가 달성하기를 원하는 것의 예입니다. 'index.js' 서버 코드와'public/main.js' 클라이언트 코드에 특히주의하십시오.이 파일들에서 "타이핑"이라는 단어를 찾으십시오. . 이 예제에서 보듯이 일반적으로 barebones websockets을 통해 "타이핑 중"이라는 메시지를 올바르게 전송할 수 있습니다. ** ** 데이터베이스에 * 아무것도 저장하지 않아도됩니다. – Somo

+0

다시 강조하기 위해 firebase realtime db에 무언가를 유지함으로써 "타이핑 중"하는 방법을 이미 알고 있거나 매우 잘 알고 있습니다. 내 질문은 firebase를 사용하지만 불필요하게 데이터를 지속하지 않고 socket.io 채팅 예제를 연상시키는 스타일에서 수행하는 것입니다 (즉, 클라우드 기능을 사용하거나 다른 파이어베이스 기능을 사용하지 않음). @StuckBetweenTrees, 이걸 좀 더 명확히 해두 길 바란다. – Somo

답변

1

이 뭔가를 시도 할 수 :

this.messageInput.onkeyup = function(){ 
    So when user starts typing update your database and set isTyping true. 
    Dont forget to check if isTyping set to true so it will not update every 
    time user presses the key 
} 

샘플 here

+0

이것은 firebase에 관한 질문이고 firebase의 cloud pub-sub에 관한 질문입니다. 당신은 어느 누구도 언급하지 않았습니다. – Somo

+0

DB를 트리거하지 않고 사용자에게 무언가를 보여줄 수는 없습니다. 실제 프로젝트는 firebase에 기반합니다. js를 사용하는 웹용 답변은 사용자에게 표시하기 위해 텍스트를 입력하는 방법을 보여줍니다. – AlwaysConfused