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