设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 6003|回复: 28
打印 上一主题 下一主题

[原创发布] websocket插件实现不同RMMV客户端的数据传输

[复制链接]

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

跳转到指定楼层
1
发表于 2016-5-3 23:25:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 guoxiaomi 于 2016-5-9 22:39 编辑

最近试了一下搭建个人的博客,选择了SAE做服务器。现学了一堆PHP,SQL, Javascript,html5等等之后惊奇的发现SAE的Channel通讯服务!

于是在自己的网站上搭了一个服务器,也写了一个rmmv的插件。

WebsocketPlugin.zip (2.79 KB, 下载次数: 161)

用法非常简单,我直接写到了帮助里。这里把帮助贴上来。

/*使用方法,首先联系作者注册一组账号和密码(8位),假设其中之一是username和password
* 作者邮箱是 [email protected] 你也可以访问作者的主页 http://www.gxmatmars.com
* 嫌麻烦的话,可以先用guest00~guest04这5个账户测试一下,密码都是12345678
* 1. 获得channel
* 在事件脚本中调用方法 MMO_createChannel(username, password);
* 等待服务器返回channel地址,一般需要若干秒。返回后会自动调用 MMO_callBack()并生成websocket对象MMO_ws
* 2. 向其他客户端发送数据
* 在事件脚本中调用方法 MMO_send(msg);
* 其中msg的格式必须为:"_chat=username&message=text" ,其中username换成目标客户端的用户名,text换成要发送的字符串
* 3. 客户端收到数据
* 客户端收到数据后会自动调用方法 MMO_wsOnMsg(event);
* 客户端收到的数据格式为"chat=username&message=text",其中username是发送者的用户名
* 请自行编写此方法以处理数据,就在这个文件里;
*/

由于我自己也是初学网站,所以请大家手下留情,不要SQL注入攻击啊,或者黑掉某些网页啊,或者不断的刷新网站一类的(其实我也不知道有哪些危害行为)……

============2016/5/5 第2次编辑============
修改了插件的使用方法,上述的函数也都保留了。
现在可以在插件中设置变量friendname,以方便与固定的客户端通讯。

* 新的插件文件已经更新了。*




使用方法有两种:脚本或者是插件命令。
脚本的格式如下:


插件的格式如下:


可以用\f1代替guest01,因为在插件设置里设置过了。


所有的这些操作,依次是设置guest01的变量10为10,设置变量10为字符串'test',设置开关10开和设置开关10关。

服务端关于这个的代码php是这样的:
PHP 代码复制
  1. // $level <=0 只能用_chat
  2.                         if ($level <= 0) {                               
  3.  
  4.                                 if (preg_match('/^_chat=(.*?)&message=(.*)/',$message,$match) !== 0) {
  5.                                         $channel = new SaeChannel();
  6.                                         $chat_msg = "to=".$match[1]."&from=".$name."&content=".$match[2];
  7.                                         if (get_level($match[1],$dbc) == $level) {
  8.                                                 $channel->sendMessage($match[1],$chat_msg);
  9.                                         }
  10.                                         break;
  11.                                 }
  12.                         }


============2016/5/9 第3次编辑============

范例在这里:百度网盘

为了缩小体积只拷贝了www文件夹,在不同的电脑上登陆,使用自己的账号密码,并输入朋友的账号就可以试玩了!

比如一个人输入用户名密码guest00&12345678并设置朋友的名字为guest01,另一个人输入用户名密码guest01&12345678并设置朋友的名字为guest00。
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *

Lv2.观梦者

梦石
0
星屑
497
在线时间
266 小时
注册时间
2015-12-8
帖子
873
2
发表于 2016-5-5 00:22:12 | 只看该作者
具體有甚麼用啊?

点评

用来做联机的游戏,这个websocket的连接是迅速、可靠的。比如说,联机五子棋、桌游什么的。你这边下什么位置,出什么牌,可以立即传递给其他人。  发表于 2016-5-5 01:05
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
85
在线时间
56 小时
注册时间
2011-4-6
帖子
18
3
发表于 2016-5-5 10:16:19 | 只看该作者
从理论上说,是不是也能通过这个方法实现同一玩家不同设备之间的存档共享?

点评

我之前设计的时候把传输的部分内容转义过,现在应该没问题了,会把'message='后面的内容原封不动的传送  发表于 2016-5-5 15:22
的确网盘就可以,不过手动存来存去很麻烦。如果用这种会更方便,尤其RM的存档本身很小,实时应该也不会有什么影响?  发表于 2016-5-5 13:44
理论上讲是可以的,但是websocket通讯更注重实时性的通信。共享存档的话传到网盘上就行了吧。  发表于 2016-5-5 12:29
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
497
在线时间
266 小时
注册时间
2015-12-8
帖子
873
4
发表于 2016-5-5 14:03:45 | 只看该作者
能連成怎麼樣? LA做個範例來看看拔{:2_249:}

点评

上传好了,试试范例吧  发表于 2016-5-9 22:40
看不出來效果是甚麼 弄個範例來~~  发表于 2016-5-6 01:34
发现并不知道怎么传范例,所以把事件的设置页面截图下来,可以作为参考。  发表于 2016-5-5 18:57
看来必须要传一个范例上来啊,最近时间不多,最多一周我就传上来。  发表于 2016-5-5 15:26
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
帖子
1516
5
发表于 2016-5-5 21:20:32 | 只看该作者
使用别人的网站进行信息传递......感觉有点怪怪的

点评

我对服务端的代码很感兴趣,方便提供一下吗?谢谢~  发表于 2017-9-20 16:56
本来想把服务器的搭建也写成教程,又觉得和rm的主题无关,感兴趣的人较少。所以就做了一个插件,如果你感兴趣的话,我可以提供服务端的代码。  发表于 2016-5-5 21:45
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

6
 楼主| 发表于 2016-5-6 09:28:04 | 只看该作者
小叮鈴 发表于 2016-5-5 14:03
能連成怎麼樣? LA做個範例來看看拔


你先这样试一下,不要急着要范例:

新建一个工程,加入插件,然后按照我上面的第2个事件图(ID:005)设置一下事件。

1. 对话选择登陆,等几秒弹出登录成功的信息
2. 对话选择‘改变变量10=10’,之后打开F9看看变量10的值,应该立即改变为10了。

这个是因为你登陆的账号就是guest01,改变的变量的时候输入的目标也是guest01,自然改动的是本机。

如果要实现联机功能,你把ws_login后面的guest01改成00,然后打包到另一台电脑上运行。先同时都登陆成功,之后在guest00客户端上运行插件指令ws_set guest01 v10 i 10,在guest01客户端上用F9看看是不是变量10的值已经改变了?

点评

嗯,欢迎回来~  发表于 2016-5-10 23:59
沒有用的話就= = 等有用我再來測試-.-  发表于 2016-5-10 19:24
一切技术都是无用的,你可以试试范例。  发表于 2016-5-10 13:54
阿 那有甚麼用= ="  发表于 2016-5-10 13:31
问题的关键是改变了另一个rmmv客户端中的变量和开关。  发表于 2016-5-9 12:25
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
34 小时
注册时间
2017-4-10
帖子
10
7
发表于 2017-6-22 08:51:46 | 只看该作者
是一个很好的实验方向!支持,关注!!

点评

现在正在用php写基于http访问的服务器,主要为了xp/vx/va。之后也会针对mv利用channel功能实现即时推送  发表于 2017-6-22 10:24
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14263
在线时间
718 小时
注册时间
2011-7-16
帖子
1428

开拓者

8
发表于 2017-6-22 21:07:24 | 只看该作者
不错,学习了,sae能直接使用websocket?
另外,能做一个同屏互动的吗?服务端和客户端代码都要。感谢。
RMMV网络插件,开源免费,内含服务器端,无需强制登录,云数据,弹幕,云存档,排名,兑换码,版本检测,可自由上架下架删除。q群399090587
免打包运行MV游戏,云游戏,安卓App雷神游戏厅,在线玩游戏,上传下载游戏
开源游戏:重装机兵之重装归来【RMMV制作】全球首款按照美剧分季分集的方式发布的游戏
体素画 -- MV画3D像素图的画板
RMMV显示3D模型和场景的插件
RMMV显示spine骨骼动画的插件
RMMV秘密通道插件
突破敌群数量上限8个的插件
在rmmv中显示gif动态图片的插件
一款可以在mv游戏界面的任意位置显示任意文字的插件
RMMV Toast 插件 带物品得失提示,可以设置开启关闭 兼容yep itemcore
制作一个改名卡道具插件、调整标题页面菜单的插件、在标题页面之前显示大段文字的插件、标题页面显示版本号的插件
物品得失自动提示自动上色自动换行插件
我的Q群 663889472
另外,我的插件、范例、游戏都在这里
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

9
 楼主| 发表于 2017-6-22 21:14:57 | 只看该作者
walf_man 发表于 2017-6-22 21:07
不错,学习了,sae能直接使用websocket?
另外,能做一个同屏互动的吗?服务端和客户端代码都要。感谢。{:4 ...

SAE 利用 channel 服务实现 websocket 通讯,等于是 SAE 自己搭了一个 websocket 服务器,然后所有人都连到上面去。与你自己的服务端代码之间的通讯是 http 回调。所以自己只需要做一个 web 端就行。

详情看这里: http://sinacloud.com/doc/sae/php/channel.html

不过现在也之间支持 websocket 了,只需要用 node.js 的项目,但是需要自己部署环境,那个我不会……

我可以告诉你如何让客户端与服务端进行 websocket 通讯,传输少量的信息。但是不想花时间在显示通讯内容上。

点评

加个q偶尔交流下经验吧^_^  发表于 2017-6-23 22:39
学习了,新浪的这个服务不错  发表于 2017-6-23 20:54
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4734
在线时间
666 小时
注册时间
2021-3-24
帖子
522
10
发表于 2021-3-27 10:36:48 | 只看该作者
最近想试试MV当前端用 康康
全家活光光~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-16 21:18

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表