如何在easyrtc应用程序中将自动生成的easyrtc id替换为您的应用程序用户名

时间:2015-05-18 09:38:41

标签: easyrtc

我正在使用带有wavemaker工具的easyrtc工具开发一个应用程序。对于新用户,easy rtc提供自动创建的easyrtc id。 在聊天窗口中显示随机ID ..我想用应用程序用户名替换这些ID ..

我找到了一个解决方案,我们必须在调用easyrtc.connect函数之前在客户端js文件中设置easyrtc.setUsername("")。 但这不能解决问题...

任何帮助都是适当的

2 个答案:

答案 0 :(得分:1)

现在,您可以轻松地使用此功能:

easyrtc.idToName(easyrtcid)

答案 1 :(得分:0)

他们不是解决这个问题的简单方法。但是,在连接/断开连接时,可以使用服务器端和客户端事件的混合来传递/接收用户元数据。以下是实现此目的的简单方法:

  1. 当客户端连接到服务器时,通过客户端库在连接的事件侦听器上通过sendServerMessage发送用户元数据。然后,服务器从客户端接收消息,并将关于具有该特定easyrtcid的用户的元数据存储在中心位置(例如redis)。发送到服务器的消息可以是具有结构化格式的用户元数据的json对象。请在此处查看有关连接和向服务器发送消息的详细信息:easyRTC Client-Side Documentation

  2. 当客户端断开与服务器的连接时,使用服务器端的onDisconnect事件从数据存储中删除其信息。此事件提供connectionObj,其中包括断开连接的用户的easyrtcid。使用此标识符可从数据存储中删除用户。您还可以在connectionObj上调用generateRoomList(),以便通过数据存储区中的easyrtcid和room删除用户。您可以在此处阅读有关连接对象的信息:connectionObj easyRTC documentation

  3. 以下是如何执行此操作的示例代码:

    // Client-Side Javascript Code (Step 1)
    easyrtc.connect('easyrtc.appname', function(easyrtcid){
    
       // When we are connected we tell the server who we are by sending a message
       // with our user metadata. This way we can store it so other users can
       // access it.
       easyrtc.sendServerMessage('newConnection', {name: 'John Smith'},
         function(type, data){
    
           // Message Was Successfully Sent to Server and a response was received
           // with a the data available in the (data) variable.
    
         }, function(code, message) {
    
           // Something went wrong with sending the message... To be safe you 
           // could disconnect the client so you don't end up with an orphaned
           // user with no metadata.
    
         }
    }, function(code, message) {
      // Unable to connect! Notify the user something went wrong...
    }
    

    以下是服务器端(node.js)

    的工作原理
    // Server-Side Javascript Code (Step 2)
    easyrtc.events.on('disconnect', function(connectionObj, next){
      connectionObj.generateRoomList(function(err, rooms){
          for (room in rooms) {
            // Remove the client from any data storage by room if needed
            // Use "room" for room identifier and connectionObj.getEasyrtcid() to 
            // get the easyrtcid for the disconnected user.
          }
      });
    
      // Send all other message types to the default handler. DO NOT SKIP THIS!
      // If this is not in place then no other handlers will be called for the 
      // event. The client-side occupancy changed event depends on this.
      easyrtc.events.emitDefault("disconnect", connectionObj, next);
    
    });
    

    如果使用房间,Redis是跟踪用户连接的好方法。您可以使用散列样式对象,其中第一个键是房间,每个子键/值是用户easyrtcid,其元数据的JSON散列存储为其值。它必须被序列化为字符串FYI并在查找时反序列化,但使用JSON使用JSON.stringify和JSON.parse方法这很简单。

    要检测应用程序中的占用率更改,您可以在客户端向easyrtc.setRoomOccupantListener方法添加事件侦听器,然后在触发此事件时向服务器发送另一条消息,以便从该服务器获取与其连接的所有用户数据存储区。您必须在服务器端侦听单独的消息,并将反序列化的存储中的用户返回给客户端。但是,根据您的应用,这可能需要也可能不需要。