socket.io-客户端连接,但不发光
问题描述:
我正在使用socket.io-client和socket.io在终端上制作一个小加密的聊天应用程序。客户端能够连接到服务器,但输入时不会发出用户名。socket.io-客户端连接,但不发光
客户:
var socket = require('socket.io-client')('http://127.0.0.1:3000');
socket.on('connect_error', function(){
console.log('Failed to establish a connection to the servers, or lost connection');
return process.exit();
});
var prompt = require("prompt-sync")()
var news = "Add news: Will be from database. "
var username = prompt("Username>: ")
console.log("Hold on a sec, just checking that!")
console.log("")
if (typeof username === "defined"){
socket.emit('user-name', {usr: 'username'})
}
socket.on('user-name-good',function(socket){
console.log("Okay! Your username looks good, we just require your password")
console.log("If you chose to have no password, please press enter with out pressing space!")
var password = prompt("Password>: ")
if (typeof password !== "defined"){
console.log("Please provide a password!")
return password = prompt("Username>: ")
}
socket.on('user-name-fail',function(socket){
console.log("Sorry, we could not find, "+username+""+"Please register on the website, or, if you have registered ")
return process.exit()
})
}
)
服务器代码,是基于代码socket.io聊天例如:
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
socket.on('chat message', function(msg){
io.emit('chat message', msg);
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
我添加了一个错误事件,该关闭客户端,如果涉及的连接服务器故障,所以我知道它的连接,任何帮助表示赞赏,我已经做了这个主题的研究,并尝试了很多其他方法,但无济于事。
此外,连接是在您提交数据后进行的,而不是在客户端代码启动时发生,可能会导致这种情况?
答
如果你想发送客户端和服务器之间的事件,你必须:
发送事件A从客户机到服务器,服务器将监听A事件。
如果你想事件B发送从服务器到客户端,然后必须要监听的事件B.
除了在你的代码一切我没有看到你正在听的“聊天消息“事件在客户端。
Socket.io基于这些所谓的“事件”。下面的代码将'my_event'事件发送到服务器,并且传送的数据将成为对象{a:1}。
socket.emit('my_event', { a: 1 });
如果我要处理我要听它在服务器上的此事件:
socket.on('my_event', function(data) {
// data is the object { a: 1 }
// do stuff..
});
我注重的登录,也没怎么去聊天消息。 – FlerrElectronics
如何使用从客户端发送到服务器的数据? (a ===“foo”){console.log(“a ===”foo“}。 – FlerrElectronics
在客户端写下如下内容:socket.emit('eventA','foo');以及在服务器端添加:socket.on('eventA',function(data){console.log(data);});它会在服务器的控制台上显示'foo'字符串。如果你检查typeof用户名===“defined”..它永远不会工作,因为typeof关键字不会返回'defined'。提示会为用户名变量分配一个字符串,所以你可以简单地检查:if(username){// do stuff ..} – Azamantes