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 相关文章推荐
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
Mar 12 Javascript
from 表单提交返回值用post或者是get方法实现
Aug 21 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
May 20 Javascript
jquery+json实现数据二级联动的方法
Nov 28 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
Apr 11 Javascript
浅析JS动态创建元素【两种方法】
Apr 20 Javascript
jQuery实现自动输入email、时间和域名的方法
Aug 24 Javascript
js实现图片上传预览原理分析
Jul 13 Javascript
jQuery实现checkbox的简单操作
Nov 18 jQuery
vue2.0+vue-dplayer实现hls播放的示例
Mar 02 Javascript
webpack HappyPack实战详解
Oct 08 Javascript
vue使用Sass时报错问题的解决方法
Oct 14 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
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
PHP日期时间函数的高级应用技巧
2009/05/16 PHP
phpstrom使用xdebug配置方法
2013/12/17 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
javascript  Error 对象 错误处理
2008/05/18 Javascript
javascript下利用arguments实现string.format函数
2010/08/24 Javascript
固定背景实现的背景滚动特效示例分享
2013/05/19 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
2013/10/22 Javascript
将json当数据库一样操作的javascript lib
2013/10/28 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
JavaScript中5种调用函数的方法
2015/03/12 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
原生JS轮播图插件
2017/02/09 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
python使用response.read()接收json数据的实例
2018/12/19 Python
Python调用服务接口的实例
2019/01/03 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
比利时买床:Beter Bed
2017/12/06 全球购物
MediaMarkt比利时:欧洲最大电器连锁店
2020/12/21 全球购物
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
编程实现去掉XML的重复结点
2014/05/28 面试题
自我鉴定范文200字
2013/10/02 职场文书
亲戚结婚的请假条
2014/02/11 职场文书
大学生个人自荐信样本
2014/03/02 职场文书
《苏珊的帽子》教学反思
2014/04/07 职场文书
协议书格式
2014/04/23 职场文书
网络营销计划书
2015/01/17 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
Vue的生命周期一起来看看
2022/02/24 Vue.js