服务端(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();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# angularjs
# socket.io
# angular2
# angular
# 使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
# angular中不同的组件间传值与通信的方法
# AngularJS控制器之间的数据共享及通信详解
# AngularJS控制器controller正确的通信的方法
# 在Angular项目使用socket.io实现通信的方法
# 创建一个
# 服务端
# 大家多多
# 客户端
# text
# type
# listen
# disconnected
# function
# add
# emit
# message
# started
# Observable
# rxjs
# export
# client
# Subject
# unsubscribe
# port
相关文章:
家庭服务器如何搭建个人网站?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
如何快速搭建高效服务器建站系统?
如何在IIS中新建站点并解决端口绑定冲突?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
如何用PHP快速搭建高效网站?分步指南
北京网站制作网页,网站升级改版需要多久?
如何用美橙互联一键搭建多站合一网站?
宁波自助建站系统如何快速打造专业企业网站?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
如何通过宝塔面板实现本地网站访问?
如何确保西部建站助手FTP传输的安全性?
威客平台建站流程解析:高效搭建教程与设计优化方案
宝塔建站无法访问?如何排查配置与端口问题?
图册素材网站设计制作软件,图册的导出方式有几种?
网站制作壁纸教程视频,电脑壁纸网站?
三星网站视频制作教程下载,三星w23网页如何全屏?
安徽网站建设与外贸建站服务专业定制方案
建站主机默认首页配置指南:核心功能与访问路径优化
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
如何选择CMS系统实现快速建站与SEO优化?
如何选择香港主机高效搭建外贸独立站?
建站之星安装提示数据库无法连接如何解决?
如何在腾讯云服务器上快速搭建个人网站?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
如何选择靠谱的建站公司加盟品牌?
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
如何通过虚拟主机快速完成网站搭建?
建站之星如何修改网站生成路径?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
如何基于云服务器快速搭建网站及云盘系统?
如何构建满足综合性能需求的优质建站方案?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
如何在Tomcat中配置并部署网站项目?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
建站之星如何取消后台验证码生成?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
建站之星后台密码如何安全设置与找回?
如何续费美橙建站之星域名及服务?
孙琪峥织梦建站教程如何优化数据库安全?
TestNG的testng.xml配置文件怎么写
如何制作一个表白网站视频,关于勇敢表白的小标题?
*请认真填写需求信息,我们会在24小时内与您取得联系。