如何更改'旧套接字中已弃用的set()和get()输入输出的代码
How to change 'deprecated set() and get() in old socket.io code?
我是node/socket的新手。用一个旧的教程制作一个聊天室。
下面是socket.js部分:
exports.initialize = function (server) {
io = io.listen(server);
var chatInfra = io.of("/chat_infra")
.on("connection", function(socket){
socket.on("set_name", function (data) {
socket.set('nickname', data.name, function () {
socket.emit('name_set', data);
socket.send(JSON.stringify({type:'serverMessage',
message:'Welcome to the most interesting ' +
'chat room on earth!'}));
socket.broadcast.emit('user_entered', data);
});
});
});
var chatCom = io.of("/chat_com")
.on("connection", function (socket) {
socket.on('message', function (message) {
message = JSON.parse(message);
if (message.type == "userMessage") {
socket.get('nickname', function (err, nickname) {
message.username = nickname;
socket.broadcast.send(JSON.stringify(message));
message.type = "myMessage";
socket.send(JSON.stringify(message));
});
}
});
});
}
但是我得到
TypeError: Object #<Socket> has no method 'set'
at Socket.<anonymous> (/home/me/awesome-chat/routes/sockets.js:9:18)
我使用的是"socket.io": "^1.4.8"
,我知道set()
是不赞成的,所以我试图改变设置部分使用.use()
作为每个文档的例子,但我没有运气,并得到:
TypeError: Object #<Socket> has no method 'use'
.get()部分也是如此。所以我真的很困惑,谢谢你的提示。
Socket#set
和Socket#get
不是Socket的方法。IO,所以不能用。然后必须删除这些方法。
你可以像这样赋值
插座。昵称= 'Hola'并按原样读取
要在代码中获取该值,可以这样做
.on("connection", function (socket) {
socket.on('message', function (message) {
message = JSON.parse(message);
if (message.type == "userMessage") {
if(socket && socket.nickname){
message.username = socket.nickname;
socket.broadcast.send(JSON.stringify(message));
message.type = "myMessage";
socket.send(JSON.stringify(message));
};
}
});
});
详情请参阅Socket.IO API
这里是更新后的Socket.io
相关文章:
- 从桌面读取python文件时高亮显示代码
- 如何将函数包装在函数中以避免代码重复
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 货币代码为欧元-金额的格式不应包含小数
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- Regex代码只允许一个空格
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- Ember Data DS.Model's set函数不起作用
- 从var向代码隐藏函数传递值
- 如何动态插入jquery代码
- 如何在php变量中嵌入JQuery代码
- 代码不会验证
- 如何从rails中的代码中删除新行( )
- Angularjs代码未在匿名函数中运行
- 如何做到这一点,使代码在不传递条件后执行函数
- 当我在 collapsible-set 中添加代码时,如何在 jquery Mobile 中刷新 collapsible
- 在 Vue js $set方法的回调中运行代码
- 只有从html set onclick事件调用代码声明函数时,该函数才不存在
- 如何更改'旧套接字中已弃用的set()和get()输入输出的代码
- set interval'代码编写器中用于自动数据库备份的功能