socket.io可以为不同的用户(如客户端和管理员)使用不同的URL

时间:2018-01-12 20:44:10

标签: websocket socket.io localhost

我正在构建一个可供教师和学生使用的socket.io网站。教师将在教室的网站侧面按一个按钮,然后将他的设备上的学生重定向到另一个页面。

我已经设法让这个工作,但学生和老师需要连接到相同的URL才能工作,这是localhost:3000。

所以我的问题是:我可以拥有该网站,以便教师使用不同的URL给学生吗?这是因为教师方面对学生方面的内容不同,学生不应该看到;因此需要一个不同的URL。

2 个答案:

答案 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