[问题] 关于聊天室的设计

楼主: defsrisars (阿转)   2016-07-29 06:14:00
不好意思
我是刚学网站的初学者
目前使用php+ajax+websocket+mysql实作一个简单的聊天室
并且可以上传图片
在php、ajax和贵版A了很多关键字都没有看到我想问的问题
所以发文问问看
如果问题很笨请多包涵Q
1.往上拉读取更旧的讯息
我的聊天室是一对一像FB那样的
所以每次打开来会去db抓历史讯息
但是现在是全抓
所以讯息量一大,滚轮抓出来就直接很大一串
如果又曾经上传很多图片更会影响读取速度
所以想做像fb那样只会先抓最新的50笔(maybe=50)资料
然后往上拉到底就会像FB那样ajax去抓新的资料
请问这种作法有什么关键字可以google吗?
我google很多关键字都找不到QQ
自己直接做因为是初学者,我目前想到的流程大概是
1. db抓历史讯息从全抓改成最新50笔
2.js侦测聊天室div的卷轴高度=0时ajax到php往上再抓db资料
(不过这边不知道要怎么让新抓的讯息以正确的方式出现在现有讯息的上面)
原本都是用jQuery selector.append到聊天室的div就直接会很单纯的在下面出现
2.上传影片
因为还想做上传影片,但是影片资料通常都很大(可能动辄几百MB)
所以想请问有可能上传影片到别人家的主机吗?
然后再想办法嵌入进来
好比说Youtube data API是不是可以做到这样的功能呢?
但是听说Youtube API限制很多,请问还有什么类似功能的推荐的可以使用吗?
目前想到的问题大概是这样
谢谢大家QQ
作者: lovero32000 (乐芙RO三万二)   2016-07-29 07:06:00
Infinite Scroll第二个请其他强者回答
作者: zoko741235 (台北金城武)   2016-07-29 07:34:00
1-2 原生js有个api 是可以指定插入位置的1-1 从sql 以时间或id降幂排序 然后捞最前面50笔https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML
作者: Kenqr (function(){})()   2016-07-29 09:43:00
jQuery有个prepend可以插在前面
作者: darkswallow   2016-07-29 11:00:00
parentNode.insertBefore( newNode, refNode );可以把newNode加在refNode之前,需要指明parentNode
作者: steven11329 (清新柳橙)   2016-07-29 12:01:00
虽然我对sql不太熟但是你如果msg有date字段应该可以直接设定where date>xxx抓完最新30笔后,就有最新的第30笔的date,再找比这date的date就可以继续往下抓了比这date大的date
作者: zoko741235 (台北金城武)   2016-07-29 12:32:00
也可以用limit
作者: ssccg (23)   2016-07-29 18:25:00
MSSQL有top啊
作者: gopupkimo (BUG)   2016-07-29 22:21:00
如果你的讯息有id而且是primary key,其实用id去排序跟比较大小,应该会比用日期好影片的话你可能可以考虑一下vimeo,看过蛮多网站在用,他有免费试用方案,api看起来也蛮方便的
作者: et69523820 (小猪)   2016-08-02 01:22:00
建议历史讯息 不要读数据库比较好 聊天室是即时互动等到聊天室人数越来越多 数据库负担会很重建议把数据库当作辅助就好 把重点放在缓存资料历史讯息 累积速度是非常快

Links booklink

Contact Us: admin [ a t ] ucptt.com