Zach Ke's Notes

Quick notes


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

webrtc 的 turn 服务器 coturn 的权限校验

发表于 2018-11-15 | 分类于 webrtc相关 | | 阅读次数:

前言

通过 webrtc 的 turn 服务器 coturn 的搭建 我们知道自己搭的turn server 可以用于 webrtc 的 turn server转发了,所以接下来就要开始弄 coturn 的校验机制了。
具体的配置项:传送门
校验方式主要是有两种:

  • 配置固定的用户名和密码
  • 静态key校验

我们采用的是通过开启静态key的方式,和配合 ttl 有效期的方式来做连接校验。

阅读全文 »

webrtc 的 turn 服务器 coturn 的搭建

发表于 2018-11-09 | 分类于 webrtc相关 | | 阅读次数:

前言

最近在做一个基于webrtc的项目,所以肯定需要turn和stun转发服务器,我用的是 coturn 这个服务来做。

安装

首先下载 centos7 对应的 tar 包,然后解压

地址:传送门

阅读全文 »

前端工具集(14) -- 原生js实现自动下载

发表于 2018-11-08 | 分类于 前端工具集 | | 阅读次数:

前言

之前有做一个功能,就是如果有一个h5的下载页面, 如果是在android 打开的话,自动下载对应的apk 文件。
这种情况下,不能直接粗暴的将这个下载链接, 直接用 window.open 来打开。不然这种未经用户行为的open页面时间会被浏览器給挡掉的:
1

阅读全文 »

不同浏览器的html差异整理

发表于 2018-11-08 | 分类于 前端相关 | | 阅读次数:

前言

这样主要是整理一下,之前做过的兼容一些浏览器的事情,而且因为IE比较特殊,而且各个版本差异化非常大,所以这边有针对IE进行归纳:IE 浏览器兼容问题整理
而这边更多的是在html 和 JavaScript 的使用上来进行整理, css 会比较少。

自定义属性问题

说明:
IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性.
解决方法:
统一通过getAttribute()获取自定义属性。

阅读全文 »

VerneMQ redis 连接超时问题

发表于 2018-11-06 | 分类于 webrtc相关 | | 阅读次数:

前言

最近vernemq集群中,香港和硅谷那两台有时候会重启,原因就是监控程序 cron 一直没办法 pub 和 sub, 然后调用 监控程序的 web 来重启的。
后面查看了一下香港那一台的log,发现有这么一个错误:

1
2018-10-11 06:45:08.947 [error] <0.3648.0>@vmq_diversity_script:call_function:64 can't call into Lua sandbox for function auth_on_register due to {timeout,{gen_server,call,[<0.613.0>,{call_function,auth_on_register,[{addr,<<"220.130.153.xx">>},{port,1145},{mountpoint,<<>>},{client_id,<<"39f82305f5230abcc433ef5be342a">>},{username,<<"c177fc757d6be8534a57fa68fb910">>},{password,<<"xxx">>},{clean_session,false}]}]}}

看意思好像就是在执行lua脚本的 auth_on_register 这个方法的时候,连接redis超时了??同时官网也有一个对应的issue: Timeout error for call into Lua sandbox。
可能是 redis 的 ping 超时了导致,后面试了一下,每一个集群的 mqtt 服务 分别 ping redis 服务的时间:
除了广州那一台的ping是 18ms, 香港和硅谷那两台分别是 137 ms, 所以差距还是很明显的。所以才会有 调用 lua redis 脚本 timeout 的错误,因为校验的时候,要去连接 redis, 一旦网络差一点,就马上会超时了。
而现在之所以香港 和 硅谷 连接 redis 会超时是因为我们的测试服的 redis 是在泉州的实体机上。而 cn, hk,us 都是在腾讯云上, 其中 cn 在广州, hk 在香港, us 在硅谷。 所以在没有对等网络的连接下, cn 因为线路近,所以时间还行。但是 hk 和 us 那就坑爹了,分分钟就ping 超时。

解决

所以后面的解决措施就是: 在 cn 那一台的腾讯云机器上, 部署一台新的 redis , 用来做 vernemq 的 校验 redis。 这样,由于在对等网络下,全部走内网的情况, 这三台服务器应该都挺快的。
后面部署完之后,广州那一台直接是同一台机子,所以速度就不用说了,0.01ms, 香港那一台走内网也很快,只要 9ms。不过美区那个有点坑,走内网还要 163 ms, 这个后面得再观察一下。
可以这样先试试看,后面如果美区会比较延迟的话,再对 redis 做主从,把一个从库架在美区, 因为本身 vernemq 对 redis 也只会读,不会写。

VerneMQ 集群状态如果一台挂了,其他也会reset的问题

发表于 2018-11-06 | 分类于 webrtc相关 | | 阅读次数:

前言

为了防止webrtc 的 mqtt 服务有问题,导致我们的webrtc服务出问题, 我们有针对vernemq 程序做了监控,就是每隔几分钟就会去 pub 这几台 vernemq 服务。
如果pub 失败的话,就会去重启这一台有问题的机器。
但是之前有出现了一个很严重的情况,就是重启了之后,还是pub失败,然后就一直重启,一直重启,不断循环??
后面看了一下,其中两台的log(广州和香港),好像看不出来,是正常的 connet 连接失败???

阅读全文 »

前端工具集(13) -- 原生js实现简易Promise

发表于 2018-11-05 | 分类于 前端工具集 | | 阅读次数:

前言

Promise 是 ES6 的语法,但是会有浏览器兼容性,所以如果只是简单使用的话,那么可以用原生的js来实现,但是这个实现是非常简单的,如果只是基础的使用是没有问题的。

阅读全文 »

paypal,google iap,stripe 循环订阅plan所能创建个数的最大值

发表于 2018-11-05 | 分类于 支付相关 | | 阅读次数:

前言

之前有个支付的修改,会涉及到建立非常多的plan 循环订阅plan。
所以就想知道 paypal stripe 和 google 这三个第三方支付对 plan 的创建有没有最大允许值。

paypal

相关资料:is-there-a-limit-to-how-many-billing-plans-can-i-create
看了一下应该是没有限制的:

1
I was told by Paypal support that there is no limit on how many billing plans you have created.

google iap

相关资料:

  • play-store-in-app-purchase-product-maximum-limit
  • in-app-subscription-is-there-a-limit-of-inventory-queries-from-apps

看了一下,应该也是没有限制的

1
2
There is no limit in Google Play, or if there is it is not publicly documented.
On another note, why would you possible need 10000 in app products?

stripe

看了一下文档,也没有找到,应该也是没有限制的。

前端工具集(12) -- 原生js实现生成随机字符串

发表于 2018-11-02 | 分类于 前端工具集 | | 阅读次数:

原理

利用Math.random和toString生成随机字符串。这里的技巧是利用了toString方法可以接收一个基数作为参数的原理,这个基数从2到36封顶。如果不指定,默认基数是10进制。

function generateRandomAlphaNum(len) {
    var rdmString = "";
    for (; rdmString.length < len; rdmString += Math.random().toString(36).substr(2));
    return rdmString.substr(0, len);
}

1

IE6,IE7 加载图片不显示的问题

发表于 2018-11-02 | 分类于 前端相关 | | 阅读次数:

前言

之前在做pc端内嵌页,有涉及到 IE6, IE7 的兼容。其中遇到一个情况,就是: 点击某一张图片,然后通过更换 css class 类名,将其变成另一张图片。
原来的图片是一张静态的 png 图片,点击播放之后,就变成另一张动态的 gif 图片。 这个 icon 的点击代码如下:

1
<a class="item-audio-state" href="javascript:;"></a>

用的是 a 标签,因为 IE6 下只有 a 便签才支持 hover 效果。 而且为了兼容IE6还加上了 filter 来兼容:

阅读全文 »

IE 浏览器兼容问题整理

发表于 2018-11-02 | 分类于 前端相关 | | 阅读次数:

前言

虽然现在做的一些项目,越来越不需要兼容IE的问题,但是早期几年在做的时候,还是需要兼容一些IE的问题的,所以这边就把之前遇到的一些IE的兼容问题列一下,算加入到自己的问题手册中。

IE8,IE9 使用 XDomainRequest 下不支持不同协议的post 跨域

这个可以看我的早期文章:ie8,ie9 使用 XDomainRequest 进行跨域
还是讲的比较详细的。

IE8 下对象带关键字报错

之前做官网项目的时候,有报了一个错误, 就是 IE8 以下不能用 self.server.payFromType.new 这种写法,因为 new 是关键字,会导致代码报错。
要改成这种写法 self.server.payFromType[“new”]

阅读全文 »

整合项目中常用的一些 gulp 组件

发表于 2018-11-01 | 分类于 前端相关 | | 阅读次数:

前言

虽然现在新的项目,大部分都用webpack来打包,但是还是有很多比较早期的项目都是用 grunt 或者 gulp 打包的,grunt 除了少数几个比较特殊的项目还在用之外, 其他的老项目也都是用gulp来打包,因为对比 grunt来说,gulp实在是优秀太多。
而且一些比较简单的新项目,也不适合用框架来写的,最后也是选择用gulp来打包,所以结合现在项目中的一些用 gulp 打包的项目,我整理了一些平时基本上都会用到的,或者实用的 gulp 插件。
ps: 这不是一篇描述那些流行的gulp组件的介绍文,而是一篇将我之前使用的一些gulp组件的整合文,以便后续我要用的时候,可以到这边来参考

阅读全文 »

此生最美的风景

发表于 2018-10-23 | 分类于 杂文 | | 阅读次数:

kbzgsting

阅读全文 »

浅谈之-http的状态码以及使用场景

发表于 2018-10-05 | 分类于 前端相关 , 前端浅谈系列 | | 阅读次数:

前言

众所周知,每一个HTTP响应都会带有一个HTTP状态码(HTTP Status Code),是用来表示HTTP服务器响应状态的代码。它由RFC 2616规范定义的,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等规范扩展。作为web开发者,平时经常看到200、301、302、404、500、503等。但是如果想知道这些状态码,表示的是什么,使用场景在哪里? 我觉得还是挺有意思的。所以专门花了一些时间,结合自己的知识面,专门整理了一下。
HTTP定义遵循一条规则:所有状态码的第一个数字代表了响应的状态。

  • 1 表示消息
  • 2 表示成功
  • 3 表示重定向
  • 4 表示请求错误
  • 5 表示服务器错误
阅读全文 »

Node命令行工具实践(4) - 多语言文件下载替换工具

发表于 2018-09-26 | 分类于 node相关 , Node命令行工具实践 | | 阅读次数:

前言

之前做的 Node命令行工具实践(3) - 一个用于批量导入key的命令行 其实就在项目中就很有用了。这次做的另一个命令行工具,叫做语言助手下载替换工具 lang-helper, 这个也非常有用。

需求和方案

我们的团队做的项目是基于全球范围用户的,因此我们的所有产品其实都是有多语言的,有些项目少一点的也有七八种语种,多一点可能达到二三十种。而且我们的很多语种都会送到线上的翻译平台上去翻译。当然还有一些语种是我们自己内部运营自己维护的。
为了便于管理,我就开发了一个内部的语言助手平台,用来对各个项目的多语言进行翻译和校验,拉取和下载功能,甚至是跟翻译平台的同步和拉取功能。

阅读全文 »

Node命令行工具实践(3) - 一个用于批量导入key的命令行

发表于 2018-09-26 | 分类于 node相关 , Node命令行工具实践 | | 阅读次数:

前言

之前做了一个练习之作 Node命令行工具实践(2) - 自制项目脚手架命令行,实用价值不高,这次要做的命令行就是用在项目中的。

需求和方案

为了收集用户在web上的点击行为,我们有自己的talking data 系统,并提供给web端,让web端的程序抛送。 但是为了便于存储,所以基本上存在数据库里面就是以 01020304 这种方式存放的。
其中前面两位就是项目的代号,每一个项目都有一个唯一的代号,后面的6位,两位为一个单位,所以会有树级的结构,所以会有三层来描述一个具体的用户行为,举个例子, 比如 01020101 可能就是表示 官网(01)下的个人中心(02)的购买模块(01),然后用户点击购买按钮行为(01)。

阅读全文 »

Node命令行工具实践(2) - 自制项目脚手架命令行

发表于 2018-09-26 | 分类于 node相关 , Node命令行工具实践 | | 阅读次数:

前言

通过了学习了 Node命令行工具实践(1) - 几种使用的组件库。开始试着尝试自己做一个命令行工具,就是项目初始化的脚手架 p-helper
原理很简单,执行 p-helper i –name myProject 命令,就会在当前目录中,建立一个 myProject 的项目目录。里面就是一些常用的一些目录结构:

阅读全文 »

Node命令行工具实践(1) - 几种使用的组件库

发表于 2018-09-25 | 分类于 node相关 , Node命令行工具实践 | | 阅读次数:

前言

在使用NodeJs过程中,有很多包都支持全局安装,然后提供一个命令,然后在命令行我们就可以完成一些任务,像 express, grunt, bower, yeoman, reap, karma, requirejs 等。有时候,我们也需要自己开发这样的命令行工具。
使用自定义的Node命令行,在我们的很多项目里面都有使用过,而且真的很好用,尤其是我们内部还有一些项目是辅助项目,比如多语言翻译平台,这些项目都是内部项目,但是线上的项目有涉及一些资源和文件,都跟这些内部项目息息相关。这时候我们就会开发一些Node命令行提供给开发人员,用于开发人员的更便捷操作。接下来的几篇都会讲到使用自定义的Node命令行在开发的过程中,所能提供的便捷有多好用。本篇主要是讲一下在开发Node命令行的时候,经常使用的几个npm 库。

阅读全文 »

官网构建优化流程(13) - 字体文件的跨域问题 和 S3/CloudFront/COS 设置跨域CORS

发表于 2018-09-13 | 分类于 前端相关 , 官网构建优化流程 | | 阅读次数:

前言

通过 官网构建优化流程(12) - 优化加载速度,资源分开存放 可以知道我们已经将官网的资源文件挪到云存储服务上了,并配上CDN了, 果然国内访问的话,速度快了很多。但是还是有发现了一个问题:
1

阅读全文 »

官网构建优化流程(12) - 优化加载速度,资源分开存放

发表于 2018-09-13 | 分类于 前端相关 , 官网构建优化流程 | | 阅读次数:

前因

之前有测试的同学反馈说,每次官网更新,速度都会变得很慢。这个其实是因为我们官网的服务器是在国外,所以国内访问的话,就会比较慢。
这个项目其实之前也有做了一些的优化,比如

  • js, css 的 gzip 压缩 nginx 配置gzip以优化站点资源加载速度
  • js, css 压缩,合并, html 压缩, 这些在构建的时候,就考虑过了
  • 图片压缩,雪碧图,这些在做功能的时候,就考虑过了。
阅读全文 »
1…101112…16
Zach Ke

Zach Ke

做最咸的那一条

316 日志
31 分类
83 标签
GitHub
© 2024 Zach Ke
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4