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实现动态表格点击按钮表格增加一行
Aug 24 Javascript
VS2008中使用JavaScript调用WebServices
Dec 18 Javascript
jQuery中focus事件用法实例
Dec 26 Javascript
不同编码的页面表单数据乱码问题解决方法
Feb 15 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
Jul 27 Javascript
基于js对象,操作属性、方法详解
Aug 11 Javascript
JS实现鼠标移上去显示图片或微信二维码
Dec 14 Javascript
bootstrapValidator表单验证插件学习
Dec 30 Javascript
AngularJs上传前预览图片的实例代码
Jan 20 Javascript
JS中type=&quot;button&quot;和type=&quot;submit&quot;的区别
Jul 04 Javascript
vue中nextTick用法实例
Sep 11 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
Nov 18 Vue.js
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
菜鸟修复电子管记
2021/03/02 无线电
PHP转换IP地址到真实地址的方法详解
2013/06/09 PHP
php购物车实现方法
2015/01/03 PHP
thinkPHP删除前弹出确认框的简单实现方法
2016/05/16 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
跟着JQuery API学Jquery 之三 筛选
2010/04/09 Javascript
IE无法设置短域名下Cookie
2010/09/23 Javascript
jquery里的each使用方法详解
2010/12/22 Javascript
深入理解Javascript闭包 新手版
2010/12/28 Javascript
基于Jquery+Ajax+Json的高效分页实现代码
2011/10/29 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
js 自带的 map() 方法全面了解
2016/08/16 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
微信小程序 数据访问实例详解
2016/10/08 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
Python json格式化打印实现过程解析
2020/07/21 Python
python开发入门——列表生成式
2020/09/03 Python
马来西亚在线时尚女装商店:KEI MAG
2017/09/28 全球购物
Michael Kors香港官网:美国奢侈品品牌
2019/12/26 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
幼儿园端午节活动方案
2014/08/25 职场文书
归元寺导游词
2015/02/06 职场文书
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫
PC版《死亡搁浅导剪版》现已发售 展开全新的探险
2022/04/03 其他游戏