現在、Javascript アプリケーションを作成しています。これにはAppJSを使用しています。
クライアントとサーバー間の接続を理解するのに問題があります。
メニューバー -> ソケットの問題
問題は、メニューバーとソケットの組み合わせです。
ソケット接続
io.sockets.on('connection', onSocketConnection)
function onSocketConnection(socket) {
socket.emit('onMessage', {
date: new Date(),
message: 'Welcome!'
})
}
メニューバー
var menubar = app.createMenu([{
label:'File',
submenu:[{
label:'New',
action: function() {
// Simply window.reload() or windows.frame.reload()?
// Reload window
}
},{
label:'Change something in view...',
action: function() {
// How to speak to client from here?
// I cannot use socket.emit()
}
}, {
label:'Exit',
action: function() {
window.close()
}
}]
}])
しかし、ユーザーがメニューバーの項目をクリックしたことをクライアントに伝えるにはどうすればよいでしょうか?
非同期ロング関数 -> ソケット
ソケットを使用するもう 1 つの問題は、非同期の長い読み込み関数です。
ソケット接続
io.sockets.on('connection', onSocketConnection)
function onSocketConnection(socket) {
var test = veryLongLoading()
console.log(test) // undefined -.-'
socket.emit('test', {
test: test
})
}
したがって、次のようなコールバックを使用する必要があると考えました。
io.sockets.on('connection', onSocketConnection)
function onSocketConnection(socket) {
veryLongLoading(returnValue)
}
function veryLongLoadingFunction(next) {
// Blablabla
next('test')
}
function returnValue(value) {
// Again socket is not available -.-'
socket.emit('test', {
test: test
})
}
同じ問題に直面した人、または私を正しい方向に向けることができる人。
多分私は流れを誤解しているだけです(私は通常PHPでプログラムしています)