私は、端末内でsocket.io-clientとsocket.ioを使用して少し暗号化されたチャットアプリを作っています。クライアントはサーバーに接続できますが、入力時にはユーザー名を送信していません。socket.io-client接続していますが、発光していません
クライアント:
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()
})
}
)
Serverのコードは、例をチャット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がイベントをリッスンする必要があります:あなたは、クライアントとサーバーの間でイベントを送信したい場合は
私は、ログインに焦点を当てたが、チャットメッセージに暇がありませんでした。 – FlerrElectronics
クライアントからサーバーに送信されたデータはどのように使用しますか? (a === "foo"){console.log( "a ===" foo "}) – FlerrElectronics
クライアント側では、socket.emit( 'eventA'、 'foo');のように記述します。サーバー側のコンソールに「foo」という文字列が表示されます。これを試してみてください。それはどのように動作しますか?また、typeof username === "defined"をチェックすると、typeofキーワードが 'defined'を返さないので動作しません。プロンプトはusername変数に文字列を割り当てます。単純にチェックできます:if(username){// do stuff ..} – Azamantes