博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
socket.io+angular.js+express.js做个聊天应用(四)
阅读量:7078 次
发布时间:2019-06-28

本文共 3037 字,大约阅读时间需要 10 分钟。

接着上一篇

使用angularjs构建聊天室的client

    
justChatting
justChatting
某某: { {message}}

改动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')})

一个简陋的聊天室完毕。

项目源代码地址:

转载地址:http://qldml.baihongyu.com/

你可能感兴趣的文章
C#未来新特性:静态委托和函数指针
查看>>
性能之巅:Linux网络性能分析工具
查看>>
Facebook曝至今最严重安全漏洞,超过5000万用户受影响
查看>>
为什么要选择Apache Pulsar(二)
查看>>
Reddit重写其iOS应用,改进性能、模块化和测试
查看>>
Mysql密码设置
查看>>
微服务:更愉快还是更嘈杂?
查看>>
Confluent平台5.0支持LDAP授权及用于IoT集成的MQTT代理
查看>>
Azure Machine Learning的新特性
查看>>
Laravel学习笔记之Route,Middleware和Controller参数传递
查看>>
设计模式之-单例
查看>>
数人云工程师手记 | 新手快速入门Docker最新版管理工具
查看>>
netty的reconnect方式之一
查看>>
php访问控制简介
查看>>
265. Paint House II
查看>>
influxdb基本操作
查看>>
GDB 自动化操作的技术
查看>>
静态路由和策略路由的配置实践
查看>>
瀑布流之实例进阶
查看>>
听飞狐聊JavaScript设计模式系列13
查看>>