如何在 easyrtc 应用程序中用您的应用程序用户名替换自动生成的 easyrtc id
How to replace auto generated easyrtc id with your applications username in easyrtc application
我正在使用带有 wavemaker 的 easyrtc 工具开发一个应用程序 tool.For 一个新用户 easy rtc 提供了自动创建的 easyrtc id。
在聊天 window 中显示了随机 ID..我想用应用程序用户名替换这些 ID..
我找到了一个解决方案,我们必须在调用 easyrtc.connect 函数之前在客户端 js 文件中设置 easyrtc.setUsername("") ..
但这并不能解决问题...
如有任何帮助,我们将不胜感激
他们没有简单的方法来解决这个问题。但是,当 connected/disconnected 时,可以将服务器端和客户端事件混合用于 pass/receive 用户元数据。这是实现此目的的简单方法:
当客户端连接到服务器时,通过客户端库在连接的事件侦听器上通过 sendServerMessage 发送用户元数据。然后,服务器从客户端接收消息,并将有关具有该特定 easyrtcid 的用户的元数据存储在中央位置(例如 redis)。发送到服务器的消息可以是具有结构化格式的用户元数据的 json 对象。在此处查看有关连接服务器和向服务器发送消息的详细信息:easyRTC Client-Side Documentation
当客户端与服务器断开连接时,使用服务器端的 onDisconnect 事件从数据存储中删除他们的信息。此事件提供一个 connectionObj,其中包括断开连接的用户的 easyrtcid。使用此标识符从数据存储中删除用户。您还可以在 connectionObj 上调用 generateRoomList() 以通过 easyrtcid 和房间从数据存储中删除用户。您可以在此处阅读有关连接对象的信息:connectionObj easyRTC documentation
下面是一些如何执行此操作的示例代码:
// 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 是跟踪连接用户的好方法。您可以使用散列样式对象,第一个键是房间,每个子 key/value 是用户 easyrtcid,元数据的 JSON 散列存储为它的值。它必须序列化为一个字符串 FYI 并在查找时反序列化,但是使用 Javascript 使用 JSON.stringify 和 JSON.parse 方法很简单。
要检测应用程序中的占用率变化,您可以在客户端的 easyrtc.setRoomOccupantListener 方法中添加事件侦听器,然后在触发此事件时向服务器发送另一条消息以连接所有用户从 datastore.You 到它必须在服务器端侦听单独的消息,并且 return 商店中的用户反序列化回客户端。但是,根据您的应用程序,这可能需要也可能不需要。
现在,您可以更轻松地完成此操作,使用此功能:
easyrtc.idToName(easyrtcid)
我正在使用带有 wavemaker 的 easyrtc 工具开发一个应用程序 tool.For 一个新用户 easy rtc 提供了自动创建的 easyrtc id。 在聊天 window 中显示了随机 ID..我想用应用程序用户名替换这些 ID..
我找到了一个解决方案,我们必须在调用 easyrtc.connect 函数之前在客户端 js 文件中设置 easyrtc.setUsername("") .. 但这并不能解决问题...
如有任何帮助,我们将不胜感激
他们没有简单的方法来解决这个问题。但是,当 connected/disconnected 时,可以将服务器端和客户端事件混合用于 pass/receive 用户元数据。这是实现此目的的简单方法:
当客户端连接到服务器时,通过客户端库在连接的事件侦听器上通过 sendServerMessage 发送用户元数据。然后,服务器从客户端接收消息,并将有关具有该特定 easyrtcid 的用户的元数据存储在中央位置(例如 redis)。发送到服务器的消息可以是具有结构化格式的用户元数据的 json 对象。在此处查看有关连接服务器和向服务器发送消息的详细信息:easyRTC Client-Side Documentation
当客户端与服务器断开连接时,使用服务器端的 onDisconnect 事件从数据存储中删除他们的信息。此事件提供一个 connectionObj,其中包括断开连接的用户的 easyrtcid。使用此标识符从数据存储中删除用户。您还可以在 connectionObj 上调用 generateRoomList() 以通过 easyrtcid 和房间从数据存储中删除用户。您可以在此处阅读有关连接对象的信息:connectionObj easyRTC documentation
下面是一些如何执行此操作的示例代码:
// 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 是跟踪连接用户的好方法。您可以使用散列样式对象,第一个键是房间,每个子 key/value 是用户 easyrtcid,元数据的 JSON 散列存储为它的值。它必须序列化为一个字符串 FYI 并在查找时反序列化,但是使用 Javascript 使用 JSON.stringify 和 JSON.parse 方法很简单。
要检测应用程序中的占用率变化,您可以在客户端的 easyrtc.setRoomOccupantListener 方法中添加事件侦听器,然后在触发此事件时向服务器发送另一条消息以连接所有用户从 datastore.You 到它必须在服务器端侦听单独的消息,并且 return 商店中的用户反序列化回客户端。但是,根据您的应用程序,这可能需要也可能不需要。
现在,您可以更轻松地完成此操作,使用此功能:
easyrtc.idToName(easyrtcid)