前端的一种长连接
实时通讯
用最简单的例子来看其实很简单
let websocket = new WebSocket('ws://localhost:8864/wan/78798'); //地址
websocket.binaryType = 'arraybuffer';
//连接成功
websocket.onopen = evt => {
console.log(evt)
websocket.send('dsadas' + '\r');
};
websocket.onmessage = nes => {
console.log(nes)
// platformContext.messageBus.publish(types.MESSAGE_BUS.TERMINAL_MESSAGE, nes.data);
};
websocket.onerror=err=>{
console.log(err)
}
websocket.onclose=ev=>{
console.log(1111)
}
后台我们需要一个 服务来支持请求
也很简单 使用koa 和koa-websocket库
import Koa from 'koa';
import route from 'koa-route';
const websocketfiy = require('koa-websocket');
const app = websocketfiy(new Koa());
app.ws.use(function(ctx, next) {
// return `next` to pass the context (ctx) on to the next ws middleware
return next(ctx);
});
app.ws.use(
route.all('/wan/:pid', function(ctx) {
// `ctx` is the regular koa context created from the `ws` onConnection `socket.upgradeReq` object.
// the websocket is added to the context on `ctx.websocket`.
console.log(777);
ctx.websocket.send('你好啊');
ctx.websocket.on('message', function(msg) {
// // do something with the message from client
// term.write(msg);
console.log(msg);
});
})
);
app.ws.use(
route.all('/yan/:pid', function(ctx) {
// `ctx` is the regular koa context created from the `ws` onConnection `socket.upgradeReq` object.
// the websocket is added to the context on `ctx.websocket`.
console.log(777);
ctx.websocket.send('你好啊');
ctx.websocket.on('message', function(msg) {
// // do something with the message from client
// term.write(msg);
console.log(msg);
});
})
);