Pomelo杂记(四)

来源:互联网 发布:php markdown 编辑器 编辑:程序博客网 时间:2024/04/27 20:03

1、----------------------------------------------------------

pomelo目前提供了hybridconnector和sioconnector,其中hybridconnector支持socket(TCP)和websocket,sioconnector支持socket.io(websocket的封装)。


sioconnector使用socket.io(websocket封装)本身有自身是有心跳的,不需要配置,服务端检测客户端退出可以通过心跳超时。

hybridconnector支持socket(TCP)和websocket,须手动设置心跳、超时断开、字典压缩和protobuf。

app.set('connectorConfig',
    {
        connector : pomelo.connectors.hybridconnector,
        heartbeat : 30,
        useDict : true,
        useProtobuf: true, //enable useProtobuf
        disconnectOnTimeout: true
    });

2、----------------------------------------------------------
before filter中怎样处理error

如果在before filter中,检测到msg异常,可以调用next(err);来将处理流程直接导向你注册的ErrorHandler。在before filter里面调用next,可以像handler里面一样,封装一个js对象作为返回给客户端的resp。

3、----------------------------------------------------------

广播对cpu的消耗较高,如果对广播的实时性要求不高建议选择buffer scheduler,当然也可以自定义scheduler。

Pomelo框架默认提供两类scheduler。

    pomelo.schedulers.direct - 默认采用的scheduler,直接将上层下来的消息发送出去。
    pomelo.schedulers.buffer - 对上层的消息进行缓存,并定期批量发送出去。可以通过flushInterval初始化参数设置刷新间隔,单位为毫秒,默认值为20毫秒。

4、----------------------------------------------------------
nodejs的mysql连接一直有bug,可能会某次连接被关闭,最新版的已经解决这个问题了,需要升级到,"mysql":"2.0.0-alpha8"

5、----------------------------------------------------------

你可以用app.set('var_name', var)做全局变量,然后其他需要的地方,只要有app,就直接app.get('var_name')就行了,app可以理解成一个全局的上下文环境。