目前正在做一个社交网站 (Thinkphp+mysql), 我想当某些用户触发了一些条件的时候通知另外一些在线的用户,比如说:发私信、给对方送了一件小礼物
目前我想到唯一的方法是 :
把要发送的消息放进Redis,然后在Action这个基类做一个redis的查询,这样用户每进行一次操作都会去查这个Redis是否有内容。但是这样不太科学,属于是被动式查询。
请教一下各位都有什么好的方法,万分谢谢!
回复内容:
目前正在做一个社交网站 (Thinkphp+mysql), 我想当某些用户触发了一些条件的时候通知另外一些在线的用户,比如说:发私信、给对方送了一件小礼物
目前我想到唯一的方法是 :
把要发送的消息放进Redis,然后在Action这个基类做一个redis的查询,这样用户每进行一次操作都会去查这个Redis是否有内容。但是这样不太科学,属于是被动式查询。
请教一下各位都有什么好的方法,万分谢谢!
https://github.com/walkor/web-msg-sender
这个绝对是你想要的,websocket+workerman实现的
DEMO:
后台发送消息的页面 http://workerman.net:3333/
用户接收消息的页面 http://workerman.net/web-msg-sender.html
原理:用户打开页面后浏览器会自动向后端服务器发送一个websocket(浏览器支持HTML5或者Flash就可以)连接,后端hold住这些连接,当想推送消息给浏览器时,向这些websocket连接写数据即可。
优点:
- 非轮询,性能很高,普通的服务器即可维持上万的连接
- 实时性好
- 兼容各种浏览器包括ie6(客户端支持flash或者html5任意一个就行)
1.轮询或者长轮询(普遍采用这种方式。这个也就是你说的方式,利用ajax不停的去请求服务器,看有没有新消息)
2.webSocket(需要浏览器支持html5。这个可以实现服务器主动推送。)
3.flash(一般网页游戏中都是利用这种方式)
1 轮询
用ajax隔一秒钟向后台询问
2 长连接
发送ajax请求到后台,但是后台阻塞不返回,知道快要超时再返回,途中遇到新消息时间可立即返回
3 websocket
客户端和服务器端建立连接通道,服务器可以主动发消息给浏览器,HTML5支持的特性
我觉得只要用户量达到一定规模,小公司做产品的话这个就应该走三方推送(极光推送,百度云推送等)去做,即使付费
自己实现的话设备和运维成本高
SignalR
内容的字数过少, 请详细描述
自己实现太麻烦,建议你使用GoEasy.免费的网页推送服务。
自己不用写代码,支持所有语言,几分钟就可以实现一个推送功能,非常简单,速度快,还可靠。
http://goeasy.io

本文比较了PHP和ASP.NET,重点是它们对大规模Web应用程序,性能差异和安全功能的适用性。两者对于大型项目都是可行的,但是PHP是开源和无关的,而ASP.NET,

本文讨论了PHP数据对象(PDO),这是PHP中数据库访问的扩展名。它通过准备好的语句及其对MySQLI的好处,包括数据库抽象和更好的错误处理,强调了PDO在增强安全性方面的作用。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Dreamweaver CS6
视觉化网页开发工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3汉化版
中文版,非常好用

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)