angular中使用Socket.io实例代码


Posted in Javascript onJune 03, 2017

服务端(nodeJs/express):

let app = require('express')();
let http = require('http').Server(app);
let io = require('socket.io')(http);

io.on('connection', (socket) => {
 console.log('user connected');
 
 socket.on('disconnect', function(){
  console.log('user disconnected');
 });
 
 socket.on('add-message', (message) => {
  io.emit('message', {type:'new-message', text: message});  
 });
});

http.listen(5000, () => {
 console.log('started on port 5000');
});

客户端,创建一个ChatService

import { Subject } from 'rxjs/Subject';
import { Observable } from 'rxjs/Observable';
import * as io from 'socket.io-client';

export class ChatService {
 private url = 'http://localhost:5000'; 
 private socket;
 
 sendMessage(message){
  this.socket.emit('add-message', message);  
 }
 
 getMessages() {
  let observable = new Observable(observer => {
   this.socket = io(this.url);
   this.socket.on('message', (data) => {
    observer.next(data);  
   });
   return () => {
    this.socket.disconnect();
   }; 
  })   
  return observable;
 } 
}

ChatComponent

import { Component, OnInit, OnDestroy } from '@angular/core';
import { Control }      from '@angular/common';
import { ChatService }    from './chat.service';

@Component({
 moduleId: module.id,
 selector: 'chat',
 template: `<div *ngFor="let message of messages">
           {{message.text}}
          </div>
          <input [(ngModel)]="message" /><button (click)="sendMessage()">Send</button>`,
 providers: [ChatService]
})
export class ChatComponent implements OnInit, OnDestroy {
 messages = [];
 connection;
 message;
 
 constructor(private chatService:ChatService) {}

 sendMessage(){
  this.chatService.sendMessage(this.message);
  this.message = '';
 }

 ngOnInit() {
  this.connection = this.chatService.getMessages().subscribe(message => {
   this.messages.push(message);
  })
 }
 
 ngOnDestroy() {
  this.connection.unsubscribe();
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery命名冲突解决的五种方案分享
Mar 16 Javascript
获取服务器传来的数据 用JS去空格的正则表达式
Mar 26 Javascript
js在IE与firefox的差异集锦
Nov 11 Javascript
JavaScript 开发工具webstrom使用指南
Dec 09 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
Apr 26 Javascript
微信小程序 教程之wxapp 视图容器 view
Oct 19 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
Jan 10 Javascript
axios中cookie跨域及相关配置示例详解
Dec 20 Javascript
vue检测对象和数组的变化分析
Jun 30 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
Sep 13 Javascript
vue spa应用中的路由缓存问题与解决方案
May 31 Javascript
详解利用eventemitter2实现Vue组件通信
Nov 04 Javascript
jquery请求servlet实现ajax异步请求的示例
Jun 03 #jQuery
深入理解Node中的buffer模块
Jun 03 #Javascript
MvcPager分页控件 适用于Bootstrap
Jun 03 #Javascript
全面解析Node.js 8 重要功能和修复
Jun 02 #Javascript
vue 中自定义指令改变data中的值
Jun 02 #Javascript
Jquery EasyUI $.Parser
Jun 02 #jQuery
BootStrap 动态表单效果
Jun 02 #Javascript
You might like
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
PHP+MYSQL的文章管理系统(二)
2006/10/09 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
2013/12/24 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
PHP构造二叉树算法示例
2017/06/21 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
iOS和Android用同一个二维码实现跳转下载链接的方法
2016/09/28 Javascript
COM组件中调用JavaScript函数详解及实例
2017/02/23 Javascript
Node+Express+MongoDB实现登录注册功能实例
2017/04/23 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
Axios学习笔记之使用方法教程
2017/07/21 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
2017/09/15 Javascript
Node.js使用Express.Router的方法
2017/11/14 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
微信小程序实现签字功能
2019/12/23 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
js+cavans实现图片滑块验证
2020/09/29 Javascript
Python argv用法详解
2016/01/08 Python
Python实现Linux中的du命令
2017/06/12 Python
python仿evething的文件搜索器实例代码
2019/05/13 Python
Django中的FBV和CBV用法详解
2019/09/15 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
使用Django的JsonResponse返回数据的实现
2021/01/15 Python
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
四川成都导游欢迎词
2014/01/18 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
民主生活会对照检查材料
2014/09/22 职场文书
服装区域经理岗位职责
2015/04/10 职场文书
小学同学聚会感言
2015/07/30 职场文书