2016-05-14 11 views
0

私は、端末内で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がイベントをリッスンする必要があります:あなたは、クライアントとサーバーの間でイベントを送信したい場合は

答えて

0

あなたがする必要があります。

あなたは、サーバからクライアントにイベント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.. 
}); 
+0

私は、ログインに焦点を当てたが、チャットメッセージに暇がありませんでした。 – FlerrElectronics

+0

クライアントからサーバーに送信されたデータはどのように使用しますか? (a === "foo"){console.log( "a ===" foo "}) – FlerrElectronics

+1

クライアント側では、socket.emit( 'eventA'、 'foo');のように記述します。サーバー側のコンソールに「foo」という文字列が表示されます。これを試してみてください。それはどのように動作しますか?また、typeof username === "defined"をチェックすると、typeofキーワードが 'defined'を返さないので動作しません。プロンプトはusername変数に文字列を割り当てます。単純にチェックできます:if(username){// do stuff ..} – Azamantes

関連する問題