socket.io+angular.js+express.js做個聊天應用(四)
接著上一篇
使用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')
})
一個簡陋的聊天室完成。
相關文章
- socket.io+angular.js+express.js做個聊天應用(一)AngularJSExpress
- socket.io+angular.js+express.js做個聊天應用(二)AngularJSExpress
- socket.io+angular.js+express.js做個聊天應用(三)AngularJSExpress
- 5個開源聊天應用程式
- 用 Swift 做一個智慧機器人聊天 App (1)Swift機器人APP
- 用 Swift 做一個智慧機器人聊天 App (2)Swift機器人APP
- 用 Swift 做一個智慧機器人聊天 App (4)Swift機器人APP
- 10 個用於網站的免費聊天應用網站
- 基於 WebRTC 與 Webcam 開發一個聊天應用Web
- WEB例項:開發一個聊天室應用Web
- 如何使用python做一個聊天小程式?Python
- 四個PHP應用小函式 (轉)PHP函式
- 使用 Socket.io 和 React 開發一個聊天應用React
- Angular做一個筆記文章管理應用Angular筆記
- 用vue全家桶+koa2+soket.io +mysql寫一個聊天應用VueMySql
- 打造一個window桌面應用:線上聊天對話機器人機器人
- OA系統應用的四個難題
- 用 Git 作為聊天應用的後端Git後端
- 做一個可除錯的Android應用除錯Android
- 用Python基於Google Bard做一個互動式的聊天機器人PythonGo機器人
- 在語音聊天原始碼中實現一個滿天星效果,應該如何做?原始碼
- java小課設:使用MySQL做一個聊天室JavaMySql
- 基於 Flutter+Dart 仿微信 App 聊天應用|flutter 聊天介面FlutterDartAPP
- 開源專案:採用 Laravel 編寫的一個聊天應用 Laravel-ChatLaravel
- 基於Flutter的仿微信聊天應用Flutter
- 使用SignalR構建聊天應用程式SignalR
- 一款極簡的聊天應用
- 用Unity做半個2D戰棋小遊戲(四):加入玩家控制Unity遊戲
- 做一個可以聊天的 Visual Studio Code 外掛
- React全家桶+Egg 做一個協作聊天室~React
- 初用SOCKET做聊天室程式後所想到的…… (轉)
- [應用案例]一個基金管理工具,做來自己用的
- sbc(四)應用限流
- 後端開發者從零做一個移動應用(一)後端
- 使用Service Worker做一個PWA離線網頁應用網頁
- 《花100塊做個摸魚小網站! 》第四篇—前端應用搭建和完成第一個熱搜元件網站前端元件
- Laravel 整合 workerman 做聊天室Laravel
- 聊天室應用開發實踐(一)