是这样的,我需要在我的页面上增加一个战队系统,大概涉及的内容有加入战队,查询战队,用户查询等等.
关于加入战队功能的实现思路:
当加入战队时,给服务器发送一个加入战队的请求,然后
服务器能及时的返回相应,告诉我请求已经成功(这种功能是不是用到websocket)
服务器会等到我再次刷新页面的时候,才在页面上显示是否加入战队成功
我觉得第一种方法更适合web应用,但是我想写的网页并不算是web应用,因为我觉得用户发送加入战队的请求后,可能就关闭我的网页去做别的事了,所以这种及时返回消息的功能可能不适合我的页面
所以我选择第二种思路来写网页
现在的问题是,当用户加载网页的时候,我的战队系统该怎么获取相关信息呢(比如,战队系统得知道我是否加入了战队,我的用户id)?
目前想到的思路有两个:
1 当页面加载后,用js去解析html页面的结构,从中分析出需要用到的数据,例如
<p>
<span data-user_id="001">测试用户</span>
已经加入的战队<span data-my_team_id="998">测试战队</span>
</p>
这样通过js一解析,我就知道当前用户的状态
2 当页面加载完成后,用ajax发起请求,获取用户的相关数据
我总觉得第二种方法不是很好,但是也觉得第一种方法怪怪的,所以想知道合适的做法是什么.
这个是战队系统的截图
1)通过Ajax请求发送加入请求,在当前页面提示用户加入请求正在处理,等Ajax请求完成后告知用户结果
2)如果发送请求后用户关闭的页面,那么等第2次用户打开页面时,发送查询是否已经加入战队,如果已经加入(通过1发送的),那么提示用户已经加入,页面跳转到相应地页面,如果没有加入(可能压根就没有发送过加入请求,如同1之前的状态),那么页面显示提示用户加入的页面
1.
①:如果是随机用户(游客)也可以加入的话,加入战队的时候 可以通过发送ip 到后端 后端对你这个ip做标记 说你加入了战队,在短时间内 你刷新页面都是通过发送ip去获取你的相关信息,但是ip 也是会变的,不会永久性能在一个地方登陆曾经注册的,
②:如果你是要固定的用户ID 给下次可以用的话 就需要先注册 然后再加入战队 这样主要你 触发加入战队,就算是关闭了电脑 下次登陆后 就能获取到你在哪个战队的信息,你需要给后端发送你的用户id
2.如果只是单纯加入战队并且显示加入成功与否的话 这种功能不需要用到websocket,这里ajax 就能实现,而且一般都是聊天系统才用得到websoket(web端和服务器端需要实时交互信息) ,
建议你先读读
HTTP权威指南
你需要补充很多知识
这个问题在你给服务器发送加入战队请求的时候post用户id给服务器!然后服务器处理这个id和加入战队请求后给数据库写入战队数据!你下次打开的时候再获取战队数据就可以了!
黯葉篂讖(这名字是念暗夜星谶吗www)说的对。
你的需求接近“私信系统”:不要求即时性,刷新页面就能获得“消息”(就是加入战队的情况“)。
我的解决思路是这样的:每次加载页面,向服务器ajax“加入战队”的处理结果。
如果有,输出。然后用户确认之后,告诉服务器“已阅”,服务器就把这个处理结果从数据库中删掉。
没有处理结果?那就没啥事了…
ps.利用javascript里的setInterval函数,可以自定义向服务器ajax的间隔…比如说每秒钟都看看有没有新的处理结果。其实第二种方法并没有那么“不好”…
题外话:
读了你的思路,我发现了一个问题:用户信息和战队信息居然不是一起拿到的…这对我来说稍微有点不可思议…如果我写后端代码的话一定会把这两个东西绑一起,一次性用sql查出来,发送给客户端…
不就是个增删改查吗?别自己把自己搞复杂了。还websocket,我囧。。先把http搞懂了。。