首页 技术 正文
技术 2022年11月9日
0 收藏 467 点赞 4,527 浏览 1437 个字

websocket:用语服务器端主动向客户端推送消息

本例基于koa框架编写用例:服务器端需要安装相关模块 koa koa-socket co等

服务器端脚本:(需要安装相关模块 koa koa-socket co等)
//服务端
const Koa = require( 'koa' )
const IO = require( 'koa-socket' )
const co = require( 'co' )const app = new Koa()
const io = new IO({
namespace:"mysocket",
ioOptions:{
path:'/restapi/websocketstock'
}
})
const TIME = 3000; //定时向客户端发送消息
let TimerId = null;io.use( co.wrap( function *( ctx, next ) {
let start = new Date()
yield next()
console.log( `response time: ${ new Date() - start }ms` )
}))// io.use( ... );io.on("connection",function(){ //连接成功
console.log("successfully connect to websocket");
});//定时向客户端推送消息
function sendToClient(){
TimerId = setInterval(function(){
io.broadcast('stockchallenge', {"userNum":parseInt(Math.random()*100)});
},TIME);
}//监控客户端发来的消息源
io.on('messageClient', ( ctx, data ) => {
console.log("来自客户端的消息");
console.log(data);
})io.attach( app );
sendToClient();app.listen( 3004 );
console.log("app is listening at 3004");

  

客户端脚本:在客户端,websocket需要浏览器支持才能使用,不过有许多js脚本对浏览器做了兼容性封装,本例以socket.io为例,

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div>users count: <span id="count"></span></div>
<script src="js/socket.io.js"></script>
<script>var socket = io.connect( "http://机器名:3004/mysocket",{
path:"/restapi/websocketstock"
});socket.on("connect",function(){
console.log("连接成功");
});var sessionId;
//监控服务器端的消息 stockchallenge
socket.on("stockchallenge", function (data) {
console.log("来自服务器端的消息",data);
document.getElementById("count").innerHTML = data.userNum; });</script>
</body>
</html>

  

上一篇: TIDB技术文档翻译
下一篇: Jquery基础笔记
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,494
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295