如何使用GoEasy实现PHP与Websocket实时通信
最近搞了搞websocket 做了个简答的聊天demo
1. 从GoEasy获取appkey
appkey是验证用户的有效性的唯一标识。
Ø 注册账号。 GoEasy官网:https://goeasy.io
Ø 用注册好的账号登录到GoEasy的后台管理系统,创建您自己应用(application).
Ø Application创建好之后系统会自动为您生成appkey
系统会生成两个keys,一个Super key和一个Subscribe key;它们的区别在于前者既可以订阅又可以推送,但后者只能用于订阅。
2. GoEasy实现向特定用户群推送的原理
知道了他们的推送原理,可以更加方便我们了解他们的服务,以及理解我们写的代码。其实原理很简单,只需要确定哪些用户需要接收信息,然后让这些用户都订阅一个相同的channel(频道)。然后再往这个平台上推送消息即可!所有关键在于channel,channel一致,则可以接收到信息,否则收不到!
对于订阅必须要的信息有:Appkey, channel
对于推送必须要的信息有:Appkey, channel, content
3. 用GoEasy实现订阅(接收)的实例
实现步骤:
1. 引入goeasy.js
2. 创建goeasy实例/对象
3. 用subscribe 函数进行订阅,然后在回调函数里接收信息即可
<script type="text/javascript"src="https://cdn.goeasy.io/goeasy.js"></script>
<script type="text/javascript">
var goEasy = new GoEasy({appkey: 'your appkey'});
goEasy.subscribe({
channel: 'your_channel',
onMessage: function(message){
alert('接收到消息:'+message.content);//拿到了信息之后,你可以做你任何想做的事
}
});
</script>
有了这几行代码后,只要保证网络畅通的情况下,页面会自动弹出你从任何平台上推送的信息。
4. 用GoEasy实现推送及接收的实例
目前GoEasy支持三种推送方式:Java后台推送(它们有提供JAVA SDK和 maven远程仓库), JS推送,RestAPI推送(有了RestAPI,我们就可以用PHP, .NET, Ruby…来推送信息了,很方便)

说了这么多,上代码,
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="UTF-8">
/*这里引入就不说了*/
<script type="text/javascript" src="https://cdn-hangzhou.goeasy.io/goeasy.js"></script>
<script type="text/javascript">
var goEasy = new GoEasy({
appkey: 'BC-2a8038ce95db44a4b566c434f73b57f8'
});
//按回车键发送消息
document.onkeydown=function(event){
var e = event || window.event ;
if(e && e.keyCode==13){ // enter 键
if(document.getElementById("txt").value != ''){
pub();
}
}
};
//消息发送
function pub (){
//获取值不说了
var vues = document.getElementById("txt").value
//内容追加
var s = "<p class='pa'> "+vues+":——my</p>";
document.getElementById("con").innerHTML += s
//z重点来了 这里是消息推送
goEasy.publish({
//标识 也可以说是自己的唯一标识
channel: 'bianchao2',
//消息内容
message: vues
});
//发送完清空文本框
document.getElementById("txt").value=''
//聊天框滚动条自动滚到底部显示最新信息
document.getElementById("con").scrollTop =document.getElementById("con").scrollHeight
}
//接收信息
goEasy.subscribe({
//对方的标识
channel: 'bianchao',
onMessage: function(message){
//alert('收到:'+message.content);
var s = "<p class='pb'> 他——:"+message.content+"</p>";
//同理 追加内容
document.getElementById("con").innerHTML += s
//聊天框滚动条自动滚到底部显示最新信息
document.getElementById("con").scrollTop =document.getElementById("con").scrollHeight
}
});
//GoEasy-OTP可以对appkey进行有效保护,详情请参考:GoEasy-Reference
</script>
<style type="text/css">
#con{
width: 15rem;
height: 30rem;
border: 1px solid #000;
overflow-y:scroll;
}
.pa{
width: 100%;
color:red;
text-align: right;
}
.pb{
width: 100%;
color:green;
text-align: left;
}
</style>
</head>
<body>
<div id="con">
</div>
<input type="text" id="txt" >
<button onclick="pub();">推送</button>
<table>
<tr>
<td>
</td>
</tr></table>
</body>
</html>
至此 一个简单的基于goeasy的 websocket 聊天室 就实现了 有不好的地方 欢迎指教
大家也可以自己完善一些功能。
如何使用GoEasy实现PHP与Websocket实时通信的更多相关文章
- Python基于websocket实时通信的实现—GoEasy
Python websocket实时消息推送 在这里我记录一下之前如何实现服务器端与客户端实时通信: 实现步骤如下: 1. 获取GoEasy appkey. 在goeasy官网上注册一个 ...
- PHP基于websocket实时通信的实现—GoEasy
PHP websocket实时消息推送 在这里我记录一下之前如何实现服务器端与客户端实时通信: 实现步骤如下: 1. 获取GoEasy appkey. 在goeasy官网上注册一个账号, ...
- C(++)基于websocket实时通信的实现—GoEasy
c(++) websocket实时消息推送 在这里我记录一下之前如何实现服务器端与客户端实时通信: 实现步骤如下: 1. 获取GoEasy appkey. 在goeasy官网上注册一个账 ...
- node.js Websocket消息推送---GoEasy
Goeasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送!个人感觉goeasy推送更稳定,推送 速度快,代码简单易懂上手快 浏览器兼容性:GoEasy推送 支持websocket ...
- C(++) Websocket消息推送---GoEasy
Goeasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送!个人感觉goeasy推送更稳定,推送 速度快,代码简单易懂上手快 浏览器兼容性:GoEasy推送 支持websocket ...
- 【Node/JavaScript】论一个低配版Web实时通信库是如何实现的( WebSocket篇)
引论 simple-socket是我写的一个"低配版"的Web实时通信工具(相对于Socket.io),在参考了相关源码和资料的基础上,实现了前后端实时互通的基本功能 选用了Web ...
- Uniapp使用GoEasy实现websocket实时通讯
Uniapp作为近来最火的移动端开发技术,一套代码,可以打包成Android/iOS app和各种平台的小程序,可谓是没有最方便只有更方便. GoEasy上架DCloud Uniapp插件市场已经有一 ...
- 微信小程序使用GoEasy实现websocket实时通讯
不需要下载安装,便可以在微信好友.微信群之间快速的转发,用户只需要扫码或者在微信里点击,就可以立即运行,有着近似APP的用户体验,使得微信小程序成为全民热爱的好东西~ 同时因为微信小程序使用的是Jav ...
- PHP Web实时消息后台服务器推送技术---GoEasy
越来越多的项目需要用到实时消息的推送与接收,怎样用php实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 ...
随机推荐
- python __builtins__ frozenset类 (27)
27.'frozenset', 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素. class frozenset(object) | frozenset() -> empty froze ...
- poj 1186 方程的解数【折半dfs+hash】
折半搜索,map会T所以用hash表来存状态 #include<iostream> #include<cstdio> #include<map> using nam ...
- python 之 random 模块、 shutil 模块、shelve模块、 xml模块
6.12 random 模块 print(random.random()) (0,1)----float 大于0且小于1之间的小数 print(random.randint(1,3)) [1,3] 大 ...
- 跟我一起玩Win32开发(10):绘图(C)
今天我们来欣赏一下用于填充图形的函数,当然我不会逐个去介绍,因为我们参考MSDN直接套参数就可以了. SetDCBrushColor函数有必要扯一下,它的声明如下: COLORREF SetDCBru ...
- Python标准库 datetime
>>> import datetime >>> now = datetime.datetime.now() >>> now datetime.da ...
- 记录Jmeter集成Jenkins运行Ant做接口监听
最近在鼓捣Jmeter的接口测试,把他集成到了Jenkins上做自动化接口监听.把操作记录下来. 首先就是进行接口测试的编写.打开Jmeter.主要是把接口的测试逻辑和断言处理调通后就OK了,接口程序 ...
- 微信小程序消息推送,前端操作
<form bindsubmit="getFormId" report-submit="true"> <button form-type=&q ...
- 477 Total Hamming Distance 汉明距离总和
两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量.计算一个数组中,任意两个数之间汉明距离的总和.示例:输入: 4, 14, 2输出: 6解释: 在二进制表示中,4表示为0100,14表 ...
- python_13(前端—cs)
第1章 前端三大标准:1.1 三大标准介绍 1.2 html标签一览表 第2章 结构标准 html 2.1 html结构 2.2 html常用标签 2.2.1 h1-h6 2.2.2 span 2.2 ...
- java课程设计全程实录——第0天
本次课设计划在5月25日完成.目前还剩18天. 第0天主要完成事项如下: 搭建开发环境 制定开发进度规划表 阅读前人的课设 详细: 1.IDE的下载,安装,以及配合使用的阿里巴巴编程规约插件的安装与测 ...