java - IM即時(shí)通信服務(wù)器原理
問題描述
點(diǎn)對(duì)點(diǎn) 的 可以直接使用socket進(jìn)行通信
但是一般的工程實(shí)現(xiàn) 都需要服務(wù)器進(jìn)行轉(zhuǎn)發(fā)
那么我想請(qǐng)問 服務(wù)器管理那么多連接
它是如何做到 可以將消息發(fā)送給想發(fā)送的人的
除了openfire還有什么 開源實(shí)現(xiàn)
問題解答
回答1:node.js + socket.io websocket
之前做的是用node.js + socket.io 把連接的信息放到一個(gè)json中. 用 key來標(biāo)識(shí) 是哪個(gè)用戶的. 然后發(fā)送的 消息 里會(huì)持有 這個(gè)key 服務(wù)端再通過 key 轉(zhuǎn)發(fā)給 對(duì)應(yīng) 的客戶端.只知道 web這些 其它 的不是很清楚
回答2:就拿簡單的QQ比較,QQ用戶啟動(dòng)客戶端登陸以后,實(shí)際就是用戶告知服務(wù)端我已經(jīng)上線,那么這時(shí)候客戶端就處理服務(wù)器的監(jiān)聽狀態(tài),所謂一對(duì)一發(fā)消息,就是用戶A發(fā)個(gè)消息出去,然后消息內(nèi)容里面肯定包含了,內(nèi)容、接收者B,服務(wù)器監(jiān)聽到這個(gè)消息,然后根據(jù)接收者B獲取clientSocket-B將A的消息轉(zhuǎn)發(fā)給B,大致如此
相關(guān)文章:
1. golang - 用IDE看docker源碼時(shí)的小問題2. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.3. 在windows下安裝docker Toolbox 啟動(dòng)Docker Quickstart Terminal 失敗!4. docker-machine添加一個(gè)已有的docker主機(jī)問題5. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問題6. docker-compose中volumes的問題7. 我在centos容器里安裝docker,也就是在容器里安裝容器,報(bào)錯(cuò)了?8. 為什么我ping不通我的docker容器呢???9. docker容器呢SSH為什么連不通呢?10. docker不顯示端口映射呢?

網(wǎng)公網(wǎng)安備