Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用Node.js和Socket.io获取缺少错误处理程序套接字消息大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
您好我得到以下错误,使用Node.js和socket.io运行服务器.

@H_634_7@missing error handler on `socket`. TypeError: CAnnot read property 'connected' of undefined at Socket.<anonymous> (C:\Documents and SetTings\Subhrajyoti\Desktop\Restore \htdocs\video broadcast\server.js:68:13) at Socket.emit (events.js:95:17) at Socket.onevent (C:\Documents and SetTings\Subhrajyoti\Desktop\Restore\htd ocs\video broadcast\node_modules\socket.io\lib\socket.js:330:8) at Socket.onpacket (C:\Documents and SetTings\Subhrajyoti\Desktop\Restore\ht docs\video broadcast\node_modules\socket.io\lib\socket.js:290:12) at Client.ondecoded (C:\Documents and SetTings\Subhrajyoti\Desktop\Restore\h tdocs\video broadcast\node_modules\socket.io\lib\client.js:193:14) at Decoder.Emitter.emit (C:\Documents and SetTings\Subhrajyoti\Desktop\Resto re\htdocs\video broadcast\node_modules\socket.io\node_modules\socket.io-parser\n ode_modules\component-emitter\index.js:134:20) at Decoder.add (C:\Documents and SetTings\Subhrajyoti\Desktop\Restore\htdocs \video broadcast\node_modules\socket.io\node_modules\socket.io-parser\index.js:2 47:12) at Client.ondata (C:\Documents and SetTings\Subhrajyoti\Desktop\Restore\htdo cs\video broadcast\node_modules\socket.io\lib\client.js:175:18) at Socket.emit (events.js:95:17) at Socket.onPacket (C:\Documents and SetTings\Subhrajyoti\Desktop\Restore\ht docs\video broadcast\node_modules\socket.io\node_modules\ENGIne.io\lib\socket.js :99:14)

我的服务器端代码如下.

var port=8888;
var express=require('express');
var morgan = require('morgan');
var http=require('http');
var bodyParser= require('body-parser');
var methodOverride = require('method-override');
var mongo = require('mongojs');
var database='Oditek';
var collections=['video'];
var app= express();
var server=http.Server(app);
var io=require('socket.io')(server);
var db = mongo.connect("127.0.0.1:27017/"+database,collections);
app.use(express.static(__dirname + '/public'));     // set the static files LOCATIOn /public/img will be /img for users
app.use(morgan('dev'));                     // log every request to the console
app.use(bodyParser.urlencoded({ extended: false }))    // parse application/x-www-form-urlencoded
app.use(bodyParser.json())    // parse application/json
app.use(methodOverride());                  // simulate deletE and PUT
db.on('ready',function () {
    console.log('database connected')
});
app.get('/',function(req,res){
    res.sendfile('view/login.html');
});
app.post('/login',res){
    var username=req.body.username;
    var password=req.body.userpassword;
    if(username && password){
        db.video.findOne({
            username:username,password:password
        },function(err,doC){
            if(doC){
                console.log('login',doc);
                res.send(doc);
            }
            if(err){
                console.log('login12',err);
                res.send("Could not login");
            }
        });
    }
});
app.get('/video',res){
    res.sendfile('view/video.html');
});

//socket----progrAMMing//
var roomid;
var clients={};
io.sockets.on('connection',function(socket){
    //console.log(socket);
    roomid=socket.handshake.query.roomid;
    var usertype=socket.handshake.query.usertype;
    socket.on('admin-join',function(data){
        console.log('admin',data);
        if(data.IsJoinAdmin){
            clients={
                "socket":roomid
            }
            socket.join(roomid);
        }
    });
    socket.on('user-join',function(data){
        console.log('user',data);
        if(data.isUserJoin){
            io.socket.connected[clients.socket].emit('user-already-joined',data);
            socket.join(roomid);
        }
    });
    socket.on('send-broadcasTing-message',function(data){
        console.log('message',data)
        io.to(roomid).emit('sending-broadcasTing',data);
    });

});
server.listen(port);
console.log('server is listening on the port'+port);

在这行收到错误io.socket.connected [clients.socket] .emit(‘user-already-joined’,data);.这行我用来向特定用户发送私信.请帮我解决错误.

解决方法

抛出您的错误,因为io对象没有属性套接字,但它有属性套接字.所以你应该这样写:

io.sockets.connected[clients.socket].emit('user-already-joined',data);

如果你使用socket.io 1.0,有一个更好的方法来做到这一点.每个套接字通过自身ID自动加入认房间.

因此,您可以使用以下代码通过id发出一个套接字:

io.to(clients.socket).emit('user-already-joined',data);

大佬总结

以上是大佬教程为你收集整理的使用Node.js和Socket.io获取缺少错误处理程序套接字消息全部内容,希望文章能够帮你解决使用Node.js和Socket.io获取缺少错误处理程序套接字消息所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。