socket.io+angular.js+express.js做个聊天应用(四)
来源:互联网 发布:python编辑器 sub 编辑:程序博客网 时间:2024/06/08 05:31
接着上一篇
使用angularjs构建聊天室的客户端
<!doctype html><html ng-app="justChatting"><head> <meta charset="UTF-8"> <title>justChatting</title> <link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="/stylesheets/room.css"> <script type="text/javascript" src="/socket.io/socket.js"></script> <script type="text/javascript" src="/bower_components/jquery/dist/jquery.js"></script> <script type="text/javascript" src="/bower_components/bootstrap/dist/js/bootstrap.min.js"></script> <script type="text/javascript" src="/bower_components/angular/angular.js"></script></head><body><script type="text/javascript"> var socket=io.connect('/'); socket.on('connected',function(){ alert('connected to justChatting!'); });</script><div class="navbar navbar-inverse navbar-fixed-top"> <div class="container"> <div class="navbar-header"> <a class="navbar-brand" href="#">justChatting</a> </div> </div></div><div class="container" style="margin-top:100px;"> <div class="col-md-12"> <div class="panel panel-default room" ng-controller="RoomCtrl"> <div class="panel-heading room-header">justChatting</div> <div class="panel-body room-content"> <div class="list-group messages" auto-scroll-to-bottom> <div class="list-group-item message" ng-repeat="message in messages"> 某某: {{message}} </div> </div> <form class="message-creator" ng-controller="MessageCreatorCtrl"> <div class="form-group"> <textarea required class="form-control message-input" ng-model="newMessage" ctrl-enter-break-line="createMessage()" placeholder="Ctrl+Enter to quick send"></textarea> </div> </form> </div> </div> </div></div><script type="text/javascript" src="javascripts/node.js"></script></body></html>
修改node.js
angular.module('justChatting', [])angular.module('justChatting').factory('socket', function($rootScope) { var socket = io.connect('/') return { on: function(eventName, callback) { socket.on(eventName, function() { var args = arguments $rootScope.$apply(function() { callback.apply(socket, args) }) }) }, emit: function(eventName, data, callback) { socket.emit(eventName, data, function() { var args = arguments $rootScope.$apply(function() { if (callback) { callback.apply(socket, args) } }) }) } }})angular.module('justChatting').directive('ctrlEnterBreakLine', function() { return function(scope, element, attrs) { var ctrlDown = false element.bind("keydown", function(evt) { if (evt.which === 17) { ctrlDown = true setTimeout(function() { ctrlDown = false }, 1000) } if (evt.which === 13) { if (ctrlDown) { element.val(element.val() + '\n') } else { scope.$apply(function() { scope.$eval(attrs.ctrlEnterBreakLine); }); evt.preventDefault() } } }); };});angular.module('justChatting').controller('MessageCreatorCtrl', function($scope, socket) { $scope.createMessage = function () { socket.emit('messages.create', $scope.newMessage) $scope.newMessage = '' }})angular.module('justChatting').directive('autoScrollToBottom', function() { return { link: function(scope, element, attrs) { scope.$watch( function() { return element.children().length; }, function() { element.animate({ scrollTop: element.prop('scrollHeight') }, 1000); } ); } };});angular.module('justChatting').controller('RoomCtrl', function($scope, socket) { $scope.messages = [] socket.on('messages.read', function (messages) { $scope.messages = messages }) socket.on('messages.add', function (message) { $scope.messages.push(message) }) socket.emit('messages.read')})
一个简陋的聊天室完成。
项目源码地址:https://github.com/edagarli/chattingnode
0 0
- socket.io+angular.js+express.js做个聊天应用(四)
- socket.io+angular.js+express.js做个聊天应用(一)
- socket.io+angular.js+express.js做个聊天应用(二)
- socket.io+angular.js+express.js做个聊天应用(三)
- TWaver HTML5 + Node.js + express + socket.io + redis(四)
- Node.js、Express、Socket.io 入门
- Node.js+Express+Socket.io环境搭建
- 使用express + socket.io实现多房间聊天应用
- Socket.IO 和 Node.js 聊天程序
- node.js+socket.io私人聊天
- Socket.IO 和 Node.js 聊天程序
- Node.js+socket.io简单在线聊天
- node.js+ express + gulp + angular
- TWaver HTML5 + Node.js + express + socket.io + redis(一)
- TWaver HTML5 + Node.js + express + socket.io + redis(二)
- TWaver HTML5 + Node.js + express + socket.io + redis(三)
- TWaver HTML5 + Node.js + express + socket.io + redis(五)
- Node.js+Express+Socket.IO搭建在线聊天室
- 【JSP学习笔记】基础JSP脚本和动作实现99乘法表
- OSX: 私人定制Dock默认程序图标
- 2048
- android 有米广告接入
- android初学者易犯错误心得笔记
- socket.io+angular.js+express.js做个聊天应用(四)
- [读书]14年读书*生活
- cocos2dx-3.0(5)------Label、LabelTTF、LabelAtlas、LabelBMFont使用之法
- HDOJ Text Reverse(Java)
- android 新闻发布系统
- 编写高质量代码——区分Overloading、Overriding及Hiding之间的差异
- UVa 10361 Automatic Poetry
- 第一篇文章
- Libsvm各主要函数参数详解