在 Websocket 中添加自定义数据

Posted

技术标签:

【中文标题】在 Websocket 中添加自定义数据【英文标题】:Adding custom data in Websocket 【发布时间】:2013-03-12 04:44:00 【问题描述】:

我想将登录的客户端用户名连同客户端输入的消息一起发送到 websocket 脚本。我需要支持实现另一个变量 rge 用户名,以便与消息一起发送。现在我正在使用:https://github.com/Flynsarmy/phpWebSocket-Chat 并且 js 是

Server.send( 'message', text );

Server 是 FancyWebSocket。这被发送到:

var FancyWebSocket = function(url)

    var callbacks = ;
    var ws_url = url;
    var conn;

    this.bind = function(event_name, callback)
        callbacks[event_name] = callbacks[event_name] || [];
        callbacks[event_name].push(callback);
        return this;// chainable
    ;

    this.send = function(event_name, event_data)
        this.conn.send( event_data );
        return this;
    ;

    this.connect = function() 
        if ( typeof(MozWebSocket) == 'function' )
            this.conn = new MozWebSocket(url);
        else
            this.conn = new WebSocket(url);

        // dispatch to the right handlers
        this.conn.onmessage = function(evt)
            dispatch('message', evt.data);
        ;

        this.conn.onclose = function()dispatch('close',null)
        this.conn.onopen = function()dispatch('open',null)
    ;

    this.disconnect = function() 
        this.conn.close();
    ;

    var dispatch = function(event_name, message)
        var chain = callbacks[event_name];
        if(typeof chain == 'undefined') return; // no callbacks for this event
        for(var i = 0; i < chain.length; i++)
            chain[i]( message )
        
    
;

绑定到我的 server.php 为:

$Server->bind('message', 'wsOnMessage');    
function wsOnMessage($clientID, $message, $messageLength, $binary)

【问题讨论】:

【参考方案1】:

发送的内容由您决定。例如,您可以像这样发送它

Server.send("USERNAME|message", text);

然后您可以通过在管道|符号处拆分接收到的字符串来提取服务器上的USERNAME。

【讨论】:

以上是关于在 Websocket 中添加自定义数据的主要内容,如果未能解决你的问题,请参考以下文章

Redux 架构中的自定义 Websocket

如何自定义 websocket 握手和/或添加过滤器?

如何自定义websocket握手和/或添加过滤器?

websocket 公用服务器 协议自定义数据结构及字段注释

WebSocket JS 的自定义标头

Java websocket在onOpen函数中获取自定义标头