socket.io+node即时通讯
来源:互联网 发布:苏州seo 编辑:程序博客网 时间:2024/05/16 17:08
实现的一个简洁的即时通讯,功能大致有某某某进入群聊,某某某退出群聊以及显示发布消息的时间等等。纯粹练手项目
- html代码
<!doctype html><html> <head> <meta charset="UTF-8"> <title>Socket.IO chat</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { font: 13px Helvetica, Arial; } form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; height: 45px;} form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; } form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; } #messages { list-style-type: none; margin: 0; padding: 0; margin-bottom: 45px;} #messages li { padding: 5px 10px; } #messages li:nth-child(odd) { background: #eee; } </style> </head> <body> <div id="register" onclick="register"> <input id="inp" autocomplete="off" /> <button>进入聊天室</button> </div> <div id="chat" style="display: none;"> <ul id="messages"></ul> <form action=""> <input id="m" autocomplete="off" /> <button>Send</button> </form> </div> </body> <script src="/socket.io/socket.io.js"></script> <script src="https://code.jquery.com/jquery-1.11.1.js"></script> <script> $(function () { var name = '' var socket = io('http://192.168.2.183:8080'); $('#register button').on('click',function(){ if($('#inp').val()){ name = $('#inp').val(); $('#register').hide(); $('#chat').show(); //发送昵称给服务器 socket.emit('my other event', {name:name}); } else{ alert('请输入昵称') } }); //用户连接时触发 socket.on('news', function (data) { $('#messages').append($('<li>').text(data + '加入群聊 ')); }); //发送数据给服务器 $('form').submit(function(){ socket.emit('chat message', {val:$('#m').val(),name:name}); $('#m').val(''); return false; }); //显示聊天信息 socket.on('chat', function(msg){ $('#messages').append($('<li>').text(msg.name+' '+msg.time)); $('#messages').append($('<li>').text(msg.msg)); }); //用户离开 socket.on('leave',function(msg){ $('#messages').append($('<li>').text(msg + '退出群聊 ')); }) }); </script></html>
- node代码
- 使用npm i 安装所依赖的包
- node app.js 启动项目
var fs = require('fs');var app = require('http').createServer(handler)var io = require('socket.io')(app);var format = require('./formatTime.js')function handler (req, res) { fs.readFile(__dirname + '/index.html', function (err, data) { if (err) { res.writeHead(500); return res.end('Error loading index.html'); } res.writeHead(200); res.end(data); });}app.listen(8080, function(err, res) { if(err) console.log('err:'+err); else console.log('server is listening on port 8080');});io.on('connection', function (socket) { socket.on('my other event', function (data) { socket.name = data.name; io.emit('news', data.name); }); socket.on('chat message', function(msg){ io.sockets.emit('chat', {msg:msg.val,name:msg.name,time:format.formatter(new Date(),'hh:mm:ss')}); }); //断开连接时触发 socket.on('disconnect', function (data) { io.sockets.emit('leave', socket.name); });});
- 另外也封装了一个转换时间的函数
exports.formatter = function (date, formatString) { if (!(date instanceof Date)) { date = new Date(date); } formatString || (formatString = 'YY/MM/DD hh:mm:ss'); var dateValue = { Y : date.getFullYear().toString().slice(-2), YY : date.getFullYear(), M : date.getMonth() + 1, MM : ('0' + (date.getMonth() + 1)).slice(-2), D : date.getDate(), DD : ('0' + date.getDate()).slice(-2), h : date.getHours(), hh : ('0' + date.getHours()).slice(-2), m : date.getMinutes(), mm : ('0' + date.getMinutes()).slice(-2), s : date.getSeconds() + 1, ss : ('0' + date.getSeconds()).slice(-2) }; return formatString.replace(/((?:Y|M|D|h|m|s){1,2})/g, function ($0, $1) { return dateValue[$1]; });};
阅读全文
0 0
- socket.io+node即时通讯
- node.js和socket.io纯js实现的即时通讯实例分享
- Node Socket.IO
- 菜鸟学习nodejs--Socket.IO即时通讯
- Android使用socket.io实现即时通讯
- socket.io node.js mysql
- node+socket 即时聊天 掌握node socket.io基本流程
- 基于socket.io即时通讯IM实现,webRTC实现视频通话
- socket即时通讯
- ubuntu install node.js socket.io
- Socket.IO 和 Node.js 入门
- node.js+socket.io配置详解
- node.js+socket.io+聊天室源码
- Socket.IO 和 Node.js 聊天程序
- node.js+socket.io私人聊天
- Socket.IO 和 Node.js 入门
- Socket.IO 和 Node.js 聊天程序
- Node.js+socket.io简单在线聊天
- 硅谷顶级VC分析师Benedict Evans:自动驾驶还在泥地里,人工智能已经是寻找租户的成品楼
- JavaScript基础(8.全选取消实例)
- 一个月内市值就蒸发掉了一半,只因为这家公司太过依赖苹果
- 16-1UDP
- 传小米邀请银行递交IPO标书,估值1000亿美元“也不疯狂”
- socket.io+node即时通讯
- 第四届世界互联网大会第二弹:李彦宏、马化腾、劈柴和雷军都说了啥?| 乌镇峰会
- Centos系列安装Docker
- sudo命令保持环境变量
- 华为轮值CEO徐直军:2019年推出支持5G的芯片与手机 | 乌镇峰会
- 我在百度这四个月
- 主导收购渡鸦科技的前百度投资并购高管方益民 任创新工场合伙人
- 分析师预测:2018年苹果或发布6.5英寸+512GB iPhone X
- PMCAFF出品|十一月30篇爆款文章合集,干货、技能、内涵齐飞,总有一款适合你