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 相关文章推荐
IE6图片加载的一个BUG解决方法
Jul 13 Javascript
Javascript中的window.event.keyCode使用介绍
Apr 26 Javascript
Javascript控制页面链接在新窗口打开具体方法
Aug 16 Javascript
获取3个数组不重复的值的具体实现
Dec 30 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
Jun 18 Javascript
详解js中class的多种函数封装方法
Jan 03 Javascript
H5图片压缩与上传实例
Apr 21 Javascript
VUE中v-model和v-for指令详解
Jun 23 Javascript
three.js实现3D视野缩放效果
Nov 16 Javascript
pm2发布node配置文件ecosystem.json详解
May 15 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
Aug 07 Javascript
浅析我对JS延迟异步脚本的思考
Oct 12 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
网页设计常用的一些技巧
2006/12/22 Javascript
Prototype使用指南之hash.js
2007/01/10 Javascript
js 文件引入实现代码
2010/04/23 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
javascript实现滑动解锁功能
2014/12/31 Javascript
jQuery实现定时读取分析xml文件的方法
2015/07/16 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
浅谈js数组和splice的用法
2016/12/04 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
jQuery无刷新上传之uploadify简单代码
2017/01/17 Javascript
JavaScript数据结构之链表的实现
2017/03/19 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
bootstrap动态添加面包屑(breadcrumb)及其响应事件的方法
2017/05/25 Javascript
微信小程序 同步请求授权的详解
2017/08/04 Javascript
代码分析vue中如何配置less
2018/09/28 Javascript
node.js实现为PDF添加水印的示例代码
2018/12/05 Javascript
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
2018/01/27 Python
对Python中实现两个数的值交换的集中方法详解
2019/01/11 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
python从内存地址上加载python对象过程详解
2020/01/08 Python
基于Python爬取素材网站音频文件
2020/10/21 Python
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
运动会广播稿200字
2014/01/15 职场文书
导游实习生自荐书
2014/01/28 职场文书
会计专业职业规划:规划自我赢取未来
2014/02/12 职场文书
企业承诺书怎么写
2014/05/24 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
2014年巴西世界杯口号
2014/06/05 职场文书
诉讼代理人授权委托书
2014/10/11 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书
pandas进行数据输入和输出的方法详解
2022/03/23 Python
Python使用永中文档转换服务
2022/05/06 Python