我正在构建一个可供教师和学生使用的socket.io网站。教师将在教室的网站侧面按一个按钮,然后将他的设备上的学生重定向到另一个页面。
我已经设法让这个工作,但学生和老师需要连接到相同的URL才能工作,这是localhost:3000。
所以我的问题是:我可以拥有该网站,以便教师使用不同的URL给学生吗?这是因为教师方面对学生方面的内容不同,学生不应该看到;因此需要一个不同的URL。
答案 0 :(得分:0)
客户端浏览的页面无关紧要,只要在JavaScript中定义了websockets,它就会以任何方式工作。
例如:
您可以创建一个 / teacher 页面,教师将在该页面输入一个URL并有一个提交按钮。然后只需在点击按钮后在 app.js 中添加此代码:
var url = "Get link from the input field";
io.on('connection', function(socket){
socket.emit('redirect', {link: url});
});
然后制作 / student 页面。在学生页面内,请务必使用以下javascript:
var socket = io('http://localhost:3000');
socket.on('redirect', function (data){
window.location = data.link; });
如果学生将浏览 / student ,它会将其重定向到您已经入狱的网址。
答案 1 :(得分:0)
你不需要"需要"一个不同的URL。您可以在连接时检查登录cookie或会话,看看他们是以学生还是教师身份登录,然后表现得恰当。如果您没有使用身份验证将其指向学生或教师内容,那么您的网站无论如何都不安全。
如果要将单个socket.io分段为多个不同的内容流,可以使用socket.io的命名空间功能。学生将连接到学生命名空间,教师将连接到教师命名空间。您仍然需要一种安全的方式来了解教师是否真的是教师。
您可以在这里阅读socket.io上的命名空间:https://github.com/socketio/socket.io/blob/master/docs/API.md#namespace