(刚刚发的帖子主题好像点错了没在首页显示,现在重开一贴,另外游戏出现的一点 bug 也修复好)
这段时间我重构了之前的弹球游戏,改名《滑稽大作战》。
这次使用了技术栈改用 Vue + Spring Boot + Spring MVC + JPA。没有使用 VueCli,有一些 es6 的东西,所以兼容性非常糟糕( Edge 都不兼容)。
此次的亮点是加入 Websocket,支持双人实时游戏。希望大家玩得开心。
总结的博客还没来得写。
操作方式: 点击中间灰色的滑稽图案它会提示去新浪授权,授权后可以开始游戏,并同时自动开启 Websocket,如果有人邀请你点击确定即可一同游戏。 游戏的按键只有 3 个:A W D (只有主邀方才能按 W 开始游戏哦)
地址: http://demo.leeys.top/demo2/
1
a1310747 2017-05-31 16:11:43 +08:00
你太滑稽了,服务器已经挂了
|
2
buir 2017-05-31 16:17:32 +08:00
http://demo.leeys.top/demo1/
还是石头剪刀布 深得我心。 |
3
CruelMoon 2017-05-31 16:25:20 +08:00
websocket 连接错误! qaq
|
6
Kilerd 2017-05-31 18:38:47 +08:00
哦,所以为啥还要新浪授权呢。
|
8
Hilong 2017-05-31 19:15:49 +08:00
按 d 没用啊,只能 a
|
9
realwangyibo 2017-05-31 19:28:46 +08:00
Mac 的 safari 可以兼容
|
10
doggg OP |
11
SingeeKing 2017-05-31 19:55:32 +08:00
@Hilong 我想说我之前也是这个问题的。。。Vimium 就好了
|
12
Sixzeroo 2017-06-01 00:22:43 +08:00
D 没用 无奈
|
13
doggg OP @Sixzeroo addEventListener("keydown", function(e) {console.log(e.keyCode)}) 在控制台输入,然后在页面按下 AD 看看 keyCode 是不是 65 和 68 ? 难道你们那边是 97 和 100 ?
|
14
ChenPeiPei 2017-06-01 14:47:27 +08:00
|
15
doggg OP 感谢大家的提醒,现在问题终于发现了。我在这里分享给大家。
首先按照 oauth2 的流程,在经过用户同意授权后我根据新浪传递的 code 值向新浪获取用户信息,此时会返回(长达 2000 字符)信息,我从中提取去用户名,uid,简介三个字段,另外开发时对于新浪返回这么多的信息我也没在意,想着以后可能要用到,干脆就新建了 3000 长度的字段存储这段 json。在 @ChenPeiPei 的提醒下,查过 Tomcat 日志后才发现这些注册失败的用户他们的第一条微博里都有 emoji 表情,emoji 采用 4 字节存储,而服务器的 MySQL 使用 utf8,只支持 3 字节。导致数据库插入失败抛出异常。https://www.v2ex.com/t/137724 V2EX 创始人有关于 emoji 存储的讨论,我在本地尝试改用 utf8mb4 时能够解决问题,不过对于 jpa 的使用者来说比较糟糕,首先 innodb 引擎的索引默认最多 767 字节,utf8 编码下索引最多支持 255 ( 255*3=765 )字符,而 utf8mb4 编码下索引最多支持 191 个字符,当然这只是默认情况下,你能够自行修改,用过 jpa 的人都知道支持使用注解创建索引,但偏偏不能自定义索引的长度。基于以上考虑我没有选择改用 utf8mb4 编码,我 emoji-java 库来去除 emoji 表情。用法是 EmojiParser.removeAllEmojis('包含 emoji 的字符串') |