2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > node.js+socket.io私人聊天

node.js+socket.io私人聊天

时间:2022-12-13 14:44:22

相关推荐

node.js+socket.io私人聊天

项目需要,所以学习使用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

<html><head><meta charset="utf-8"/><script src="/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('<li>'+data.from+'说'+data.message+'<li>');});});});</script></head><body>姓名:<input id="user_name" type="text"/><br>发送给:<input type="text" id="to"/><br>消息内容:<input type="text" id="message" /><button type="button" id="send">发送</button><ul id="message_list"></ul></body></html>

项目运行效果:

图示二:

OK,终于可以私聊了。。。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。