第十三章:基于socket.io实现即时通信
2016-06-03 13:26
337 查看
安装好环境,请参考ionic环境搭建之windows篇 和 ionic环境搭建之OS X篇 。
服务器端的搭建参考socket io官网,里面有非常详细的描述,按照步骤下来,最终可以在localhost进行模拟聊天。
下面是手机端的说明。
引入socket.io.js:
定义Chats tab:
定义tab-chat.html:
在app.js中定义chats的state:
定义ChatsCtrl:
实现factory:
参考资料:
服务器端的搭建参考socket io官网,里面有非常详细的描述,按照步骤下来,最终可以在localhost进行模拟聊天。
下面是手机端的说明。
引入socket.io.js:
<script src="js/socket.io.js"></script>
定义Chats tab:
<!-- Chats Tab --> <ion-tab title="Chats" icon-off="ion-ios-chatboxes-outline" icon-on="ion-ios-chatboxes" href="#/tab/chats"> <ion-nav-view name="tab-chats"></ion-nav-view> </ion-tab>
定义tab-chat.html:
<ion-view view-title="Chats"> <ion-content overflow-scroll="true" style="overflow: hidden"> <ion-scroll zooming="true" direction="y" style=" height:500px;" > <ion-list> <uib-alert ng-repeat="msgInfo in messages" type="{{msgInfo.type}}" close="closeAlert($index)">{{msgInfo.msgType}}: {{msgInfo.msg}}</uib-alert> </ion-list> </ion-scroll> <div class="bar bar-footer"> <label class="item item-input" style=" width:85%"> <input type="text" placeholder="please add your message here" ng-model="msg"></input> </label> <button class="button button-positive" ng-click="send(msg)">Send</button> </div> </ion-content> </ion-view>
在app.js中定义chats的state:
.state('tab.chats', { url: '/chats', views: { 'tab-chats': { templateUrl: 'templates/tab-chats.html', controller: 'ChatsCtrl' } } })
定义ChatsCtrl:
.controller('ChatsCtrl', function ($scope,mediaPlayer, chats) { $scope.messages = []; chats.on('chat message', function (msg) { var msgInfo = { msg: msg, type: 'warning',msgType:"Receiver" } $scope.messages.push(msgInfo); console.log('receive msg from others: ' + msg); }); $scope.send = function (msg) { var msgInfo = { msg: msg, type: 'success', msgType: "Sender" } $scope.messages.push(msgInfo); console.log('start to send msg: ' + msg); chats.emit('chat message', msg); }; $scope.closeAlert = function (index) { $scope.messages.splice(index, 1); }; })
实现factory:
var baseUrl = 'http://localhost:3000/'; .factory('chats', function socket($rootScope) { var socket = io.connect(baseUrl); 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); } }); }) } }; })
参考资料:
https://github.com/jbavari/ionic-socket.io-redis-chat http://jbavari.github.io/blog/2014/06/17/building-a-chat-client-with-ionic/ http://socket.io/get-started/chat/
相关文章推荐
- MongoDB 的 GridFS 详细分析
- HDU 1718 Rank (排序)
- 论SOA架构的几种主要开发方式【转】
- winform弹出唯一窗体的方法
- 有关【线程】销毁的理解
- 微信友盟分享失败总结
- 【第九章】 Spring的事务 之 9.2 事务管理器 ——跟我学spring3
- 分部式爬蟲(一) 創建環境
- webapp开发
- 到数组的指针
- 15个易遗忘的java知识点
- 15个易遗忘的java知识点
- 使用ItemTouchHelper实现侧滑删除,拖拽
- 数字键盘锁 dfs
- drwable资源丶资源文件及补间动画
- 新建一个用户,让他只能看到某一个视图(View),如何设置
- 网络编程中的TCP协议的几点总结
- 浅谈模式识别中的特征提取
- config.locale
- django 增加主健的迁移问题