鍍金池/ 問(wèn)答/Java  HTML/ socket.io 是通過(guò)什么發(fā)送給某個(gè)人

socket.io 是通過(guò)什么發(fā)送給某個(gè)人

搞了一整天,現(xiàn)在想了兩種方案:
第一種:
//這個(gè)辦法可以通過(guò)把監(jiān)聽(tīng)事件改變與前端的事件同步,就可以做到消息發(fā)送到指定的人。
// 服務(wù)端:

`var io = require('socket.io').listen(3001);
io.sockets.on("connection",function(socket){
 socket.emit('newss', { hello: 'world' });
 socket.on('tanweijie', function (data) {console.log(data);});})
//在前端:
var socket = io.connect('http://localhost:3001');
  socket.on('newss', function (data) {
console.log(data);
socket.emit('tanweijie', { my: 'data' });  });`

第二種辦法:(這個(gè)搞了好一陣子)
//可能代碼有點(diǎn)亂,文字說(shuō)明:
就是每一次有連接的時(shí)候把connection返回的對(duì)象保存,發(fā)送的時(shí)候就調(diào)用該用戶保存的對(duì)象 .emit 就可以發(fā)送到指定用戶

//服務(wù)端
var SocketObj = {};
var SocketArray = [];
var x = 0;
var io = require('socket.io').listen(8080);

io.sockets.on('connection', function(socket){//連接成功
    SocketObj[socket.id] = socket;
    SocketArray.push(socket.id);

socket.on('objmsg', function(data){  //myX用于接收某個(gè)用戶的消息
    console.log(data); 
    if(data.my.length != 0 & data.my[0] != "" & data.my[1] != ""){
    SocketObj[data.my[0]].emit('servermsg', { hello: data.my[1]});//news用于發(fā)送消息給某個(gè)用戶
    }
});
console.log(SocketArray);//有那些人連接了

socket.on("disconnect", function(callbackOBJ) {//連接斷開(kāi)

    console.log(callbackOBJ);
})


});

//前端
<script>
  var socket=io.connect('http://findme.ltd:8080');
  socket.on('servermsg',function(data){
    console.log(data);
  });
  var send = function(text){socket.emit('objmsg',{my:text})}
   </script>
  </head>
  <body>
      從這里選一個(gè)<%= title %>
      <input type="text" id="th"  placeholder="填入對(duì)方ID" />
      <input type="text" id="th2" placeholder="對(duì)話"  />
      <input type="button" name="fi" value="send" onclick="var th = [document.getElementById('th').value,document.getElementById('th2').value];send(th);" />
  </body>

說(shuō)白了就是一個(gè)保存對(duì)象,另一個(gè)創(chuàng)建多個(gè)監(jiān)聽(tīng),如果做一個(gè)“一對(duì)一”的聊天,應(yīng)該采用那種?或者說(shuō)常見(jiàn)的是那種(可能我這兩種都不對(duì)),如果是做一個(gè)“群聊天”,應(yīng)該用哪種?

回答
編輯回答
傻丟丟

采用第2中。
一對(duì)一的聊天是這兩貨開(kāi)個(gè)獨(dú)立的聊天室,服務(wù)端進(jìn)行中轉(zhuǎn)
A發(fā)消息給服務(wù)端,服務(wù)端廣播給聊天室,因?yàn)榱奶焓抑挥蠥,B,所以達(dá)到了飼料的效果

2017年7月13日 01:19