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 相关文章推荐
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
Jul 09 Javascript
Javascript alert消息换行的方法
Aug 07 Javascript
JavaScript判断textarea值是否为空并给出相应提示
Sep 04 Javascript
jQuery实现瀑布流布局
Dec 12 Javascript
使用Chart.js图表库制作漂亮的响应式表单
Oct 28 Javascript
javascript中闭包(Closure)详解
Jan 06 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
Nov 15 Javascript
AngularJS表单提交实例详解
Feb 18 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
May 01 Javascript
vue router学习之动态路由和嵌套路由详解
Sep 21 Javascript
基于JS实现父组件的请求服务过程解析
Oct 14 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
Apr 20 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
输入值/表单提交参数过滤有效防止sql注入的方法
2013/12/25 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
PHP数组实例详解
2016/06/26 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
js 连接数据库如何操作数据库中的数据
2012/11/23 Javascript
JS脚本defer的作用示例介绍
2014/01/02 Javascript
js的2种继承方式详解
2014/03/04 Javascript
jQuery操作元素css样式的三种方法
2014/06/04 Javascript
JS弹出可拖拽可关闭的div层完整实例
2015/02/13 Javascript
JavaScript更改原始对象valueOf的方法
2015/03/19 Javascript
JS使用cookie设置样式的方法
2016/06/30 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
2016/10/05 Javascript
AngularJS表单和输入验证实例
2016/11/02 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
js事件触发操作实例分析
2019/06/21 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
vue遍历对象中的数组取值示例
2019/11/07 Javascript
python实现复制文件到指定目录
2019/10/16 Python
将pytorch转成longtensor的简单方法
2020/02/18 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
2020/03/06 Python
django实现将后台model对象转换成json对象并传递给前端jquery
2020/03/16 Python
10个很棒的 CSS3 开发工具 推荐
2011/05/16 HTML / CSS
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
优秀的自荐信要注意哪些
2014/01/03 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
预备党员表决心书
2014/03/11 职场文书
交通文明倡议书
2014/05/16 职场文书
计算机软件专业求职信
2014/06/10 职场文书
委托书格式
2014/08/01 职场文书
美德少年事迹材料500字
2014/08/19 职场文书
公民代理授权委托书
2014/09/24 职场文书