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 相关文章推荐
Javascript与flash交互通信基础教程
Aug 07 Javascript
javascript 函数调用规则
Aug 26 Javascript
JavaScript null和undefined区别分析
Oct 14 Javascript
jquery表格内容筛选实现思路及代码
Apr 16 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
Jun 11 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
Jun 23 Javascript
微信小程序实现图片懒加载的示例代码
Dec 13 Javascript
es6新特性之 class 基本用法解析
May 05 Javascript
在vue中安装使用vux的教程详解
Sep 16 Javascript
详解Vue中组件传值的多重实现方式
Aug 16 Javascript
JavaScript中this的学习笔记及用法整理
Feb 17 Javascript
javascript设计模式 ? 职责链模式原理与用法实例分析
Apr 16 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
url decode problem 解决方法
2011/12/26 PHP
destoon数据库表说明汇总
2014/07/15 PHP
解读PHP中上传文件的处理问题
2016/05/29 PHP
推荐dojo学习笔记
2007/03/24 Javascript
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
Jquery iframe内部出滚动条
2010/02/11 Javascript
JavaScript中的私有/静态属性介绍
2012/07/26 Javascript
window resize和scroll事件的基本优化思路
2014/04/29 Javascript
使用pjax实现无刷新更改页面url
2015/02/05 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
原生JS和jQuery版实现文件上传功能
2016/04/18 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
JavaScript DOM节点操作方法总结
2016/08/23 Javascript
js实现分页功能
2017/05/24 Javascript
Angular将填入表单的数据渲染到表格的方法
2017/09/22 Javascript
Vue中插入HTML代码的方法
2018/09/21 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
es6函数之rest参数用法实例分析
2020/04/18 Javascript
vue-iview动态新增和删除的方法
2020/06/17 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
python django使用haystack:全文检索的框架(实例讲解)
2017/09/27 Python
Django实现快速分页的方法实例
2017/10/22 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
Python将字典转换为XML的方法
2020/08/01 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
大四本科生的自我评价
2013/12/30 职场文书
学生请假条
2014/04/11 职场文书
开幕式邀请函
2015/01/31 职场文书
2015年感恩父亲节活动策划方案
2015/05/05 职场文书
获奖感言怎么写
2015/07/31 职场文书
2016党员党章学习心得体会
2016/01/14 职场文书
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL