Javascript 在node.js中与特定用户聊天

Javascript 在node.js中与特定用户聊天,javascript,jquery,html,node.js,socket.io,Javascript,Jquery,Html,Node.js,Socket.io,这是我与所选用户进行私人聊天的代码。它不像私人消息那样向所选用户发送消息 服务器端: var fs = require('fs'), http = require('http'), sio = require('socket.io'); var server = http.createServer( function(req, res) { if (req.url === '/index') { fs.readFile('./inde

这是我与所选用户进行私人聊天的代码。它不像私人消息那样向所选用户发送消息

服务器端:

   var fs = require('fs'),
    http = require('http'),

    sio = require('socket.io');




  var server = http.createServer( function(req, res) {

    if (req.url === '/index') {
        fs.readFile('./index.html', function(err, page) {
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.write(page);
            res.end();

        });
    }
    else if (req.url === '/karthick') {
        fs.readFile('./karthick.html', function(err, page) {
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.write(page);
            res.end();
        });
    }
    else if (req.url === '/raj') {
        fs.readFile('./raj.html', function(err, page) {
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.write(page);
            res.end();
        });
    }

else if (req.url === '/Harendra') {
        fs.readFile('./Harendra.html', function(err, page) {
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.write(page);
            res.end();
        });
    }
    else if (req.url === '/send') {
        fs.readFile('./sendingmsg.html', function(err, page) {
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.write(page);
            res.end();
        });
    }
    else {
            res.writeHead(301,
              {Location: '/index'}
            );
            res.end();
        }
});
server.listen(8000, function() {
  console.log('Server listening at http://192.168.1.16/8000');
});
io = sio.listen(server);
// store messages
var messages = [];

io.sockets.on('connection', function(socket){
  socket.on('chat message', function(msg){
    console.log('Received: ', msg);
    messages.push(msg);
    io.sockets.emit('chat message', msg);
  });
  messages.forEach(function(msg) {
    socket.send(msg);
  })
});
客户端:发送

<!DOCTYPE html>
<html>
    <body>
        <title>send message</title>
        <ul id="messages"></ul>
        <form action="">
            <select>
                 <option id="kar"  value="karthick">karthick</option>
                 <option id="raj" value="Raj">Raj</option>
                 <option id="haren" value="Harendra">Harendra</option>
          </select><br />
             <textarea id="m"  rows="4" cols="50">

            </textarea><br/>
                <button id=btn>Send</button>
        </form>
         <script src="https://cdn.socket.io/socket.io-1.1.0.js"></script>
    <script src="http://code.jquery.com/jquery-1.11.1.js"></script>
    <script>
      var socket = io.connect('http://192.168.1.21:8000');
      $('form').submit(function(){
        socket.emit('chat message', $('#m').val());
        $('#m').val('');
        return false;
      });
      socket.on('disconnect', function() {
        $('#messages').append('<li>Disconnected</li>');
      });
     </script>
    </body>
</html>

发送消息
    卡迪希 拉吉 哈伦德拉

    发送 var socket=io.connect('http://192.168.1.21:8000'); $('form')。提交(函数(){ emit('chat message',$('#m').val()); $('m').val(''); 返回false; }); socket.on('disconnect',function()){ $(“#消息”).append(“
  • 已断开连接”
  • ”); });
    收到的客户端:1

    <!DOCTYPE html>
    <html>
        <body>
            <title>Users</title>
            Welcome Harendra
            <ul id="messages"></ul>
            <script src="/socket.io/socket.io.js"></script>
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
            <script>
             $(function(){
        var socket = io.connect();
        socket.on('connect', function () {
          socket.on('message', function(message) {
            $('#messages').append($('<li>').text(message));
          });
          socket.on('disconnect', function() {
            $('#messages').append('<li>Disconnected</li>');
          });
        });
    
    
      });
            </script>
    
        </body>
    </html>
    
    
    使用者
    欢迎哈伦德拉
    
      $(函数(){ var socket=io.connect(); socket.on('connect',function(){ socket.on('message',函数(message){ $(“#消息”).append($(“
    • ”).text(消息)); }); socket.on('disconnect',function()){ $(“#消息”).append(“
    • 已断开连接”
    • ”); }); }); });

      当我选择用户发送私人消息时,它不工作。请帮我找个人

      您的服务器套接字实现中缺少一些逻辑

      您不应该使用
      io.sockets.emit(…)
      将消息发送到所有具有
      io.sockets.emit(…)
      的客户端,而应该将其发送到特定的文件室-
      socket.to(…).emit(…)

      请看一下这张照片

      以下是抽象逻辑:

    • 您的套接字应该属于某个房间,以便接收“私人”消息()

    • 你应该将你的“私人”信息广播到特定的房间,而不是广播给所有的客户。可以通过指定房间()来完成此操作:

    • socket.join('roomName');
      
      socket.to('roomName').emit('chat message', msg);