Witam
Jako że sockety obsługują porty zważając na to że to node.js.. zdecydowałem się ominąć to, nie dawać zawartości strony do index.html - zostawiłem go pustym plikiem, wszystko inne napisałem natomiast w osobnym pliku i lokacji na serwerze - w index.php, gdzie jako link do skryptu w head dałem localhost:3000 oraz w io() dałem localhost:3000 i działa! w pliku php mam podłączenie do socketów czyli do uruchomionego procesu pliku index.js.
I teraz tak, pierwsze pytanie, czy mogę jakoś te porty inaczej ustawić? jak to poprawnie skonfigurować / napisać.
W pliku php inicjuje io.emit i on łączy się z localhost:3000 ale zewnętrzne osoby wtedy nie są połączone do index.js bo zablokowałem port 3000 w NTP.. a zaś z kolei jeśli odblokuję i dam nie localhost tylko -> domena.pl:3000 to wtedy plik php co prawda wyśle emita io.emit do index.js no ale to wiąże się z tym że muszę w NTP odblokować port 3000 a tego robić nie chcę, bo już wynikowo będzie to zrobione u mnie na serverze tak że tylko port 80 będzie odblokowany no i może pare innych.
Więc jak to w socketach i node zrobić? żeby mój plik php łączył się do index.js po localhoście, inni widzieli to po zalogowaniu (w panelu) również. Ale na ogół na serwerze ten port ma być zablokowany.
Pytanie nr 2
W socket.io emituję wystartowanie nowego procesu w javie, wtedy w index.js znajduje się on w:
io.on('connection', function(socket){
socket.on('server start', function(msg){
var spawn = require('child_process').spawn,
minecraftServerProcess = spawn('java', [
'-Xmx512M',
'-Xms256M',
'-jar',
'engine.jar',
'nogui'
]);
});
});
// DRUGA POŁOWA
minecraftServerProcess.stdout.on('data', log);
minecraftServerProcess.stderr.on('data', log);
socket.on('chat message', function(msg){
minecraftServerProcess.stdin.write(msg+'\n');
});
function log(data) {
io.emit('chat message', data.toString());
}
Początkowo to co znajduje poniżej "// DRUGA POŁOWA"
było umieszczone w kodzie zaraz za kodem spawnowania nowego procesu gry w java.. i to działało tylko że po załadowaniu moja konsola w przeglądarce też działała i przyjmowała komendy, ale po odświeżeniu przeglądarki już niestety moje połączenie się utraciło - nie wie gdzie wysłać emita z pliku.php
Zupełnie na samym początku było to zrobione tak że tak część kodu zaczynająca się od ...
var spawn = ... była nie od "taba" w io.connection tylko luźno, no to wtedy logiczne że po uruchomieniu samego procesu index.js w node serwer wystartował, niby ok.. ale i tak i tak potrzebuję zrobić takie coś na guziku że klikam w button i serwer zaczyna się startować..
W sumie to pytanie jak i sam temat na forum bardziej do osób które siedziały w node i socket, bo jak widzicie mam problem też w index.js i nie wiem jak to ugryźć, a jak dam "// DRUGA POŁOWA - kod poniżej tego napisu" zaraz za spawnowaniem procesu to zaś po odświeżeniu jak już wspominałem nie łączy mnie do tego.
Bo w node i socket to jest tak że jak odświeżam to łączy mnie do samego index.js, natomiast io.connection zadziała tylko raz bo to jest jednorazowa jakby transjisja która się potem ucina.. no a jak już wspominałem jak zostawię ten kod taki jakim jest (kod wyżej) to będzie działać zawsze.. ale wtedy
minecraftServerProcess.stdout.on('data', log);
minecraftServerProcess.stderr.on('data', log);
nie wie o jaki proces chodzi bo jest on zagnieżdżony w
io.on('connection', function(socket){
socket.on('server start', function(msg){
Tak więc czekam na pomoc:
1. porty w node i socket
2. problem z kodem
Pozdrawiam