作者defsrisars (阿转)
看板Web_Design
标题[问题] 关於聊天室的设计
时间Fri Jul 29 06:14:00 2016
不好意思
我是刚学网站的初学者
目前使用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
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.165.43.67
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Web_Design/M.1469744042.A.3DC.html
1F:推 lovero32000: Infinite Scroll07/29 07:06
2F:→ lovero32000: 第二个请其他强者回答07/29 07:07
3F:推 zoko741235: 1-2 原生js有个api 是可以指定插入位置的07/29 07:34
4F:→ zoko741235: 1-1 从sql 以时间或id降幂排序 然後捞最前面50笔07/29 07:36
6F:→ zoko741235: lement/insertAdjacentHTML07/29 07:39
7F:→ Kenqr: jQuery有个prepend可以插在前面07/29 09:43
8F:→ darkswallow: parentNode.insertBefore( newNode, refNode );07/29 11:00
9F:→ darkswallow: 可以把newNode加在refNode之前,需要指明parentNode07/29 11:02
谢谢大家
努力一个早上我已经可以顺利的从db抓最新的30笔资料了
然後经过测试也已经可以顺利的往上加入资料并以正确的方式排序
虽然还没完全做好
但还是非常谢谢大家
※ 编辑: defsrisars (140.134.18.55), 07/29/2016 11:48:58
※ 编辑: defsrisars (140.134.18.55), 07/29/2016 11:54:04
10F:推 steven11329: 虽然我对sql不太熟但是你如果msg有date栏位应该可以07/29 12:01
11F:→ steven11329: 直接设定where date>xxx07/29 12:01
※ 编辑: defsrisars (111.82.229.8), 07/29/2016 12:07:24
※ 编辑: defsrisars (111.82.229.8), 07/29/2016 12:08:05
我的有date
请问是用date去纪录目前抓到哪里吗?
※ 编辑: defsrisars (111.82.229.8), 07/29/2016 12:08:55
12F:→ steven11329: 抓完最新30笔後,就有最新的第30笔的date,再找比这07/29 12:21
13F:→ steven11329: date的date就可以继续往下抓了07/29 12:21
14F:→ steven11329: 比这date大的date07/29 12:22
了解,非常谢谢大大的解释,我大概知道要怎麽做了
15F:推 zoko741235: 也可以用limit07/29 12:32
我说错了 我用的是没有limit的MSSQL QAQ
不过还是非常谢谢大大~~~
※ 编辑: defsrisars (61.226.118.124), 07/29/2016 12:49:56
第一个顺利做出来了
谢谢大家~
※ 编辑: defsrisars (140.134.18.54), 07/29/2016 18:09:50
16F:→ ssccg: MSSQL有top啊07/29 18:25
我有用到唷~不过感觉还是limit更方便一点
17F:推 gopupkimo: 如果你的讯息有id而且是primary key,其实用id去排序07/29 22:21
18F:→ gopupkimo: 跟比较大小,应该会比用日期好07/29 22:22
我後来也是这样做的Q
因为我试过diff跟datecompare都还是不能用日期比大小
跟SQL其实很不熟,只会用些最基本的,研究很久都还是fail
所以最後我还是直接用uid去比大小
19F:推 gopupkimo: 影片的话你可能可以考虑一下vimeo,看过蛮多网站在用,07/29 22:42
20F:→ gopupkimo: 他有免费试用方案,api看起来也蛮方便的07/29 22:43
谢谢大大!! 我再去google研究看看这个东西
※ 编辑: defsrisars (1.165.43.67), 07/30/2016 01:27:42
※ 编辑: defsrisars (1.165.43.67), 07/30/2016 01:29:01
21F:→ et69523820: 建议历史讯息 不要读资料库比较好 聊天室是即时互动 08/02 01:22
22F:→ et69523820: 等到聊天室人数越来越多 资料库负担会很重 08/02 01:22
23F:→ et69523820: 建议把资料库当作辅助就好 把重点放在缓存资料 08/02 01:23
24F:→ et69523820: 历史讯息 累积速度是非常快 08/02 01:28