我正在使用带有wavemaker 工具的easyrtc 工具开发一个应用程序。对于新用户,easy rtc 提供了自动创建的easyrtc id。在聊天窗口中显示随机 id..我想用应用程序用户名替换这些 id..
我找到了一种解决方案,我们必须在调用 easyrtc.connect 函数之前在客户端 js 文件中设置 easyrtc.setUsername("") 。但这并不能解决问题......
任何帮助都会得到帮助
我正在使用带有wavemaker 工具的easyrtc 工具开发一个应用程序。对于新用户,easy rtc 提供了自动创建的easyrtc id。在聊天窗口中显示随机 id..我想用应用程序用户名替换这些 id..
我找到了一种解决方案,我们必须在调用 easyrtc.connect 函数之前在客户端 js 文件中设置 easyrtc.setUsername("") 。但这并不能解决问题......
任何帮助都会得到帮助
现在,您可以更轻松地使用此功能:
easyrtc.idToName(easyrtcid)
他们不是解决这个问题的简单方法。但是,可以在连接/断开连接时混合使用服务器端和客户端事件来传递/接收用户元数据。这是实现此目的的简单方法:
当客户端连接到服务器时,通过客户端库在连接的事件侦听器上通过 sendServerMessage 发送用户元数据。然后,服务器从客户端接收消息,并将有关具有该特定 easyrtcid 的用户的元数据存储在中心位置(例如 redis)。发送到服务器的消息可以是带有结构化格式的用户元数据的 json 对象。在此处查看有关连接和发送消息到服务器的详细信息:easyRTC 客户端文档
当客户端与服务器断开连接时,使用服务器端的 onDisconnect 事件从数据存储中删除其信息。此事件提供一个 connectionObj,其中包括断开连接的用户的 easyrtcid。使用此标识符从数据存储中删除用户。您还可以在 connectionObj 上调用 generateRoomList() 以通过 easyrtcid 和 room 从数据存储中删除用户。您可以在此处阅读有关连接对象的信息:connectionObj easyRTC 文档
这是一些如何执行此操作的示例代码:
// 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 并在查找时反序列化,但这很简单,使用 Javascript 使用 JSON.stringify 和 JSON.parse 方法。
要检测应用程序中的占用率变化,您可以在客户端的 easyrtc.setRoomOccupantListener 方法中添加一个事件侦听器,然后在触发此事件时向服务器发送另一条消息,以让所有用户从数据存储区连接到它。您必须在服务器端侦听单独的消息,并将商店中反序列化的用户返回给客户端。但是,根据您的应用程序,这可能需要也可能不需要。