目前项目用到nodejs + socket.io。
Socket是负责各个客户端过来的连接。 每个人可能各自在自己那段输入,然后同步到其他人都能看到别人输入的。
如果是字符级别的同步,就是说,哪怕一个人输入一个字符,其他人也都要能立马同步在自己那端看到。 我测试了下,做不到,我一直不停的在那儿输入,其他的客户端跟不上的,因为连续发送的同步消息太多了。
请问,哪位有做过这种级别的同步吗?
还是说,每隔固定的时间同步一次?
需要优化,例如精度设置为3s。
1、慢速打字: 敲击字符速度间隔,大于3s,直接发送。
2、快速打字: 敲击字符速度间隔,小于3s,每3s发送一次,接收端要做一点技巧,不要直接显示,要把这3s里面接受的字符,逐一的“打”在对方的屏幕上,看起来就特么的跟真事儿一样就行了。
谢谢提醒,但是如果来做呢? 如何知道输入了几秒钟?
这个页面可以做很多操作的,比如输入,回车换行等。。。
就是取3秒里面的内容,然后发送,接收端慢慢显示的话? 下一个三秒钟的内容又来了,前一个三秒钟的还没显示完,那不是前一个三秒里面的内容会丢掉吗?
这个问题现在我好想没好办法
谢谢提醒,但是我还是不晓得如何实现, 如何知道输入了几秒钟?
这个页面可以做很多操作的,比如输入,回车换行,比如缩进,就是相当于n多个人在编辑一个页面,不光是打字打消息,如果有人在页面回车,缩进,这些都要同步,而且还有,如果多个人同时在编译某一行怎么办呢?
就是取3秒里面的内容,然后发送,接收端慢慢显示的话? 下一个三秒钟的内容又来了,前一个三秒钟的还没显示完,那不是前一个三秒里面的内容会丢掉吗?
这个问题现在我好想没好办法
试试这个 sharejs
没太懂需求~可以理解成聊天室么?
楼上的哥们,正解。 这里我做点说明:
一般类似的操作,不要试图去一个动作一个动作的去同步,应该按照时间来,但是这个时间间隔,得自己去尝试调整,实时同步的效率不是取决于socket,而是取决于你的网络速度。
做些小的改进去欺骗用户的眼睛,让他分辨不出来,你发送了多少次请求,但是最后一次看到的一定是正确的,就OK了。 让他以为你的页面是在一个一个的字符做同步,其实你是分时段发送的。