node.js+socket.io私人交談

來源:互聯網
上載者:User

項目需要,所以學習使用node.js +socket.io實現私人交談功能,忙活了大半天終於搞明白了,基本原理就是當server端接收到

socket串連請求的時候,就會每一個建立一個socket,而串連的socket由於沒有表示,所以每一個socket只可以發送給自己資訊,如果要

發送給其他的socket串連資訊需要標識其他的socket串連。

廢話不多說了,上代碼。。

server.js

var io = require('socket.io').listen(8080);io.set('log level', 1);var users = {};io.sockets.on('connection', function (socket) {  io.sockets.emit('connect',{hell:'boy'});  socket.on('private message', function (from,to,msg) {    console.log('I received a private message by ', from, ' say to ',to, msg);if(to in users){users[to].emit('to'+to,{mess:msg});}  });  socket.on('new user',function(data){ if(data in users){ }else{var nickname = data;users[nickname]= socket; } console.info(users);  });  socket.on('disconnect', function () {    io.sockets.emit('user disconnected');  });});
測試頁面index.html

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>    <script src="http://localhost:8080/socket.io/socket.io.js"></script>    <script>        $(function(){            var socket = io.connect('http://localhost:8080');socket.on('connect', function (data) {console.log(data);}); $("#send").click(function(e){var from = $('#user_name').val(),    msg  = $('#message').val(),    to   = $('#to').val(), $message_list = $('#message_list'); socket.emit('new user',from); socket.emit('private message',from,to,msg); socket.on('to'+from, function (data) {$message_list.append('
  • '+data.from+'說'+data.message+'
  • ');}); }); }); </script>姓名:
    發送給:
    訊息內容:發送
    • 項目運行效果:


      圖示二:


      OK,終於可以私聊了。。。



      聯繫我們

      該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

      如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

      A Free Trial That Lets You Build Big!

      Start building with 50+ products and up to 12 months usage for Elastic Compute Service

      • Sales Support

        1 on 1 presale consultation

      • After-Sales Support

        24/7 Technical Support 6 Free Tickets per Quarter Faster Response

      • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.