gpt4 book ai didi

node.js - 在node.js中使用socket.io共享用于协作工作的url

转载 作者:太空宇宙 更新时间:2023-11-03 23:09:43 25 4
gpt4 key购买 nike

我正在使用 node.js 和 socket.io 开发多用户绘图应用程序

我在 Node.js 上使用 Express Web 框架

var express = require("express"),
http = require("http");
var hoganex = require('hogan-express');
var app = express(),
server = http.createServer(app)
io = require('socket.io').listen(server);

var routes = require('./routes');

var app = express({
views: path.join(__dirname, 'views')
});
app.set('views', __dirname + '/views');

app.set('view engine', 'html');
app.set('layout', 'layout.html');
app.engine('html', hoganex);
app.get('/test', routes.index);
app.use(express.static(__dirname + '/assets'));

// Listen for incoming connections from clients
io.sockets.on('connection', function (socket) {
//code for collaboration goes here using socket.on and other methods for sending...
});

我想做类似etherpad的事情和 togetherjs完成了。每当用户访问 web 应用程序时,都会向他提供该应用程序的一个新实例,现在他可以共享某种经过操纵的或任何其他随机生成的 url,他可以用它连接其他用户/对等点,以便他们都可以协作工作,就我而言,协作绘图。

所以问题是如何实现这一点。向每个新传入的用户呈现相同的 index 页面,然后为他提供共享某种 url 的功能,以便与该特定 url 相关的用户能够使用 sockrt.io 和对于其他 n 个用户与其他 m 个用户协作的过程,继续进行。

最佳答案

使用其他人

您应该看看Etherdraw 。它完全按照您使用 Node.js 和 socket.io 描述的那样进行。

自己动手

  1. 当用户访问您的网站时,我们将其命名为“draw.yoursite.com”,在数据存储中创建一个新的唯一 room_id 并将用户发送到空白 Canvas 。用户绘图时,通过socket.io将绘图数据(即线条类型、线条开始(x,y)、线条结束(x,y))发送到服务器。数据存储在数据存储中并发布给订阅该房间的所有用户(发布/订阅)。

  2. 当新用户请求房间 (draw.yoursite.com/[room_id]) 时,系统会查询数据存储区。 (Etherdraw 默认将数据以 JSON 格式存储在平面文件中,但建议使用 MongoDB 之类的工具进行除测试之外的任何操作。)

  3. 如果请求的房间已存在,则发回该房间的数据。绘图以 (x,y) 坐标存储在数据存储中,并带有描述如何连接点的属性(即直线、粗体、弧线等)。

关于node.js - 在node.js中使用socket.io共享用于协作工作的url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19598364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com