我想实现一个动态生成聊天室应用;
聊天室通过用户创建;
每个聊天室有独立socket连接 类似:wss://xxx.com/:roomid
请教一下一下实现的技术点有哪些?
希望用这些来实现 node.js + koa2 + ws
我想实现一个动态生成聊天室应用;
聊天室通过用户创建;
每个聊天室有独立socket连接 类似:wss://xxx.com/:roomid
请教一下一下实现的技术点有哪些?
希望用这些来实现 node.js + koa2 + ws
是想要这样吗
const Koa = require('koa');
const http = require('http')
const WebSocket = require('ws');
const url = require('url')
const app = new Koa();
app.use((ctx, body) => {
if (ctx.url === "/") {
ctx.body = `ws://localhost:3000/${new Date().getTime()}`
}
})
const server = http.createServer(app.callback())
const ws = new WebSocket.Server({ noServer: true });
server.on('upgrade', function upgrade(request, socket, head) {
const pathname = url.parse(request.url).pathname;
if (/\/\d+/.test(pathname)) {
// do something .....
ws.handleUpgrade(request, socket, head, function done(ws) {
ws.emit('connection', ws, request);
})
} else {
socket.destroy();
}
})
server.listen(3000)
5 回答4.8k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
5 回答1.9k 阅读
2 回答1.3k 阅读✓ 已解决
1 回答1.6k 阅读✓ 已解决
如果是为了使端点独立,那么
koa2
做中间层即可,设置一个路由响应创建聊天室的请求即可,并返回socket
链接的url
即可。但其实没有必要这样,一般公用一个断点就足够了,你主要做的是设计一套比较健全的消息互通协议,以支持客户端与服务端再通信时,能够达到单播、多播以及广播的目的,这样就可以模拟聊天室的业务场景了。