如何在nodejs中创建全局HashMap
How to create a global HashMap in nodejs?
以下是我的初始定义,所有函数都在server.js的一个文件中
var HashMap = require('hashmap');
global.user_to_Socket_Map = new HashMap();
global.socket_to_user_Map = new HashMap();
function makeOnline(username,socket)
{
socket.emit("test","hi");
if(global.user_to_Socket_Map.has(username) != "true"){
console.log("Setting callee socket of "+username
+ 'socket ' + socket);
global.user_to_Socket_Map.set(username, socket);
getSocket(username).emit('test','hi2')
console.log("Setting callee socket of "+username);
global.socket_to_user_Map.set(socket, username);
global.userInCall_Map.set(username, "false");
}
}
这是我的getSocket函数
function getSocket(username)
{
console.log("Getting callee socket of "+username);
if(global.user_to_Socket_Map.has(username) == "true"){
console.log("Actually Getting callee socket of "+username);
return global.user_to_Socket_Map.get(username);
}
}
所以,我得到的错误是TypeError: Cannot call method 'emit' of undefined
at line 25
,也就是这个函数调用的getSocket(username).emit('test','hi2')
。
但我刚刚将密钥username的值设置为socket中的值。但它后面的一行返回一个未定义的。我使用了全局关键字。但仍然会出错。
您正在将布尔值与字符串进行比较。函数global.user_to_Socket_Map.has(username)
返回布尔值,而不是字符串。因此,检查if(global.user_to_Socket_Map.has(username) == "true")
将始终为假,因此getSocket(username)
将始终返回undefined
。
您要做的是在getSocket(username)
函数中将检查if(global.user_to_Socket_Map.has(username) == "true")
更改为if(global.user_to_Socket_Map.has(username))
,如下所示:
function getSocket(username)
{
console.log("Getting callee socket of "+username);
if(global.user_to_Socket_Map.has(username)){
console.log("Actually Getting callee socket of "+username);
return global.user_to_Socket_Map.get(username);
}
}
相关文章:
- 为了避免创建全局变量,可以将所有变量分配给一个对象吗
- 在JavaScript中创建全局唯一ID
- 如何在javascript中创建全局变量(使用webpack)
- 如何为HTML属性/选择器创建全局名称空间或变量
- 如何使用局部变量创建全局变量
- 在 Javascript 中创建全局变量时是否需要指定对象类型
- 如何在范围内创建全局函数
- TypeScript:从模块创建全局变量
- 创建全局主干.js错误视图
- 如何在函数中创建全局变量
- YUI3 - 创建全局变量以避免使用 .use(..);
- 如何在 Redux 中创建全局错误处理程序并在需要时覆盖它
- 创建全局设置超时变量
- 这行是在创建全局变量吗
- 停止Emscripten创建全局“;模块”;
- Javascript:从类内部创建全局作用域函数
- 如何在WSO2ESB中创建全局变量-必须是可更新的
- 如何从 Tumblr 主题选项的输出创建全局变量
- 如何在nodejs中创建全局HashMap
- 是否可以在不创建全局回调函数的情况下异步初始化Google Maps ?