![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 19.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam kilka pytań związanych z socket.io i node.js. Obie rzeczy zainstalowałem tak jak należy i działają dobrze.
1. Jak wchodzę na swoją stronę to musze port dopisywać np. www.strona.pl:port - czy da się bez konieczności tego portu? 2. Strona nie działa dopóki w konsoli nie wklepie node xxx.js i nie wlącze tego. Jak to zrobić, żeby to automatycznie działało? 3. Jest jakiś dobry poradnik (najlepiej PL) dot. node i socket.io? Jak widać jestem zielony w temacie dlatego proszę o pomoc. Pozdrawiamm! |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 207 Pomógł: 40 Dołączył: 2.06.2016 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Cytat 1. Jak wchodzę na swoją stronę to musze port dopisywać np. www.strona.pl:port - czy da się bez konieczności tego portu? Ustaw nasłuchiwanie na domyślnym porcie protokołu http (80) lub https (443) Cytat 2. Strona nie działa dopóki w konsoli nie wklepie node xxx.js i nie wlącze tego. Jak to zrobić, żeby to automatycznie działało? Musisz jakoś zainicjować aplikację. Tutaj kilka rozwiązań w zależności od systemu, na którym uruchamiasz nodejs. Np. możesz uruchamiać to jako wirtualny terminal (screen), użyć managera processów (pm2), albo uruchamiać nodejs jako usługę. Cytat 3. Jest jakiś dobry poradnik (najlepiej PL) dot. node i socket.io? Najlepiej korzystaj z oficjalnych dokumentacji, które są aktualne i adekwatne do wersji, której używasz (https://nodejs.org/docs/latest-v5.x/api/). -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ustaw nasłuchiwanie na domyślnym porcie protokołu http (80) lub https (443) Jeżeli ma już coś pod tym portem, to nie będzie mógł dwóch rzeczy jednocześnie podpiąć. Kwestia tego jak on to ma dokładnie zrobione. Cytat 3. Jest jakiś dobry poradnik (najlepiej PL) dot. node i socket.io? socket.io pomimo swojej popularności ma bardzo kiepską dokumentacje, jest ona po prostu mała. Więc pomyśl jak to będzie wyglądać w języku polskim. Po prostu, naucz się podstaw angielskiego, bo bez tego w świecie programowania to nic nie osiągniesz. Ja już od kilku lat nawet nie próbuje szukać jakichś informacji dotyczących programowania po polsku. Zwyczajnie nie ma to sensu. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 19.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Znam angielski w miarę ok, ale nie potrafię czytać dokumentacji w tym języku :/ próbowałem też z książką dot. node, ale w dwóch empikach jak byłem tak w żadnym nie ma. Widocznie będę musiał zamówić z helionu bo jest fajna (podobno) książka do tego
![]() Mam serwer dedykowany, z zainstalowanym debian 8x. emstawicki, a które rozwiązanie będzie najlepszy? Próbuję napisać czat na działającej już od dawna stronie internetowej, gdzie czat obecnie jest napisany w php+ajax i mysql. W przypadku większej ilości userów online robią się lagi co skłoniło mnie do ponownego napisania tego czatu i właśnie postawiłem na node js + socket.io Może ktoś doradzić albo nakierować? I jeszcze pytanie, bo w JS łączę się z bazą danych dzięki modułowi mysql z node, ale tam mam odkryte dane do połączenia z bazą danych. Przecież tak nie może być ![]() Ten post edytował d.stp 17.11.2016, 09:23:46 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 207 Pomógł: 40 Dołączył: 2.06.2016 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Cytat Jeżeli ma już coś pod tym portem, to nie będzie mógł dwóch rzeczy jednocześnie podpiąć. Kwestia tego jak on to ma dokładnie zrobione. O tym kolega nic nie wspominał, równie dobrze może mieć na porcie 80 postawiony serwer poczty ![]() Rozszerzając już samo stwierdzenie "Jeżeli ma już coś pod tym portem, to nie będzie mógł dwóch rzeczy jednocześnie podpiąć.": Może mieć uruchomione nasłuchiwanie dwóch usług na porcie 80 (np. httpd oraz skrypt nodejs) tylko na innych interfejsach sieciowych przy wykorzystaniu TCP (socket.io używa webSocket, które tak naprawdę jest połączeniem TCP). Inna sprawa jest gdy używamy aplikacji, korzystających z protokołu UDP - multicast pozwala na nasłuchiwanie na tym samym porcie (nie dotyczy to tematu nodejs + socket.io, ale obala pochopne stwierdzenie NIE MOŻNA). @update: Co do tematu bezpieczeństwa skryptów, nie mogą one znajdować się w publicznym folderze. Wygodnym rozwiązaniem jest też stworzenie pliku konfiguracyjnego np. /etc/myChat/database.conf gdzie albo exportujesz dane do zmiennych środowiskowych (potem łatwo możesz się do nich odwołać np. process.env.MY_CONF_SQL_HOST) albo wczytywać przez nodejs. @update2: d.stp napisz dokładnie jak obecnie masz skonfigurowany serwer i wtedy poszukamy rozwiązania. ![]() Ten post edytował emstawicki 17.11.2016, 09:31:28 -------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 19.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
No ok dzięki, trochę mnie naprowadziłeś co do ukrycia danych do bazy
![]() Jakiś pomysł z resztą? Chcę napisać czat na stronie php+mysql w node js i socket.io i właśnie nie wiem co i jak. W necie nic nie mogę znaleźć. Sam czat itd to raczej prosta sprawa, z tym że tutaj nie mogę poradzić sobie z takimi rzeczami: 1. Nie wiem jak podłączyć to na mojej stronie. W osobnym folderze jak wszystko wrzucę itd to działa jak należy. Mogę użyć iframe z ładowanem chat.html gdzie node będzie ustawione na ten folder? Zatrybi? 2. Co w końcu z tym nasłuchiwaniem portu mam zrobić? Nie wiem w sumie czy mam coś na porcie 80, ale po próbie zmiany: https://s21.postimg.org/ca5r1vrbb/Przechwytywanie.png 3. Plik "aplikacji" mam w index.js i jego próbuję odpalić a wygląda on tak: Kod var express = require('express'), app = express(), server = require('http').createServer(app), io = require('socket.io').listen(server); server.listen(process.env.PORT || 80); app.get('/',function(req,res){ res.sendFile(__dirname+'/index.html'); }); io.sockets.on('connection', function (socket) { console.log("Socket connected."); socket.on('message', function(msg){ io.emit('message', msg); }); }); za to index.html (gdzie mam czat): Kod var socket = io(); var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'xxx', password : 'xxx', database : 'xxx' }); connection.connect(); $('form').submit(function(){ socket.emit('message', $('#msg').val()); $('#msg').val(''); connection.query('INSERT INTO czat VALUES (null, 1, 1, now(), 1 )'); return false; }); connection.end(); Oczywiście to nie działa. Nie dodaje mi rekordu do bazy danych. W konsoli przez putty fajnie pokazuje: https://s21.postimg.org/lxlzledzr/Przechwytywanie.png przy każdym wejściu na stronę. @emstawicki, co dokładnie potrzebujesz z konfiguracji serwera? Ten post edytował d.stp 17.11.2016, 09:44:49 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 207 Pomógł: 40 Dołączył: 2.06.2016 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Źle podszedłeś do tematu.
Traktuj skrypt nodejs jako "serwer czatu", gdzie będzie cała obsługa, niech nie renderuje widoków tylko obsługuje żądania. Po stronie serwera httpd będzie korzystanie z serwera czatu. Zobacz jak jest zbudowany projekt: https://github.com/lovelle/jquery-chat Może to pozwoli nakreślić Tobie zasadę działania i użycia. Zobacz serwer chatu (nodejs) nadal działa na porcie 3000. ps. oczywiście zamiast redisa możesz użyć mysql Błąd ze screena to chyba właśnie próba nasłuchiwania TCP na tym samym interfejsie i porcie co pewnie działa Tobie usługa httpd - dlatego pytałem o konfigurację. -------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 19.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
No okej. To jest póki co mega test dla mnie więc kompletnie nie dbam o strukturę itd. Chciałbym żeby tylko to działało i będę kombinował dalej. Powoli może coś z tego skleję.
Dalej nie wiem czemu nie mogę dodać rekordu do bazy. Co w tym skrypcie jest nie haloo? :/ |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 207 Pomógł: 40 Dołączył: 2.06.2016 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Skrypt dodawania do bazy nie może być w pliku html, który wysyłasz. Ten plik ze skryptem wykonuje się po stronie klienta!!! Nawet o tym nie myśl.
Tak jak napisałem serwer czatu nie ma renderować widoku bo od tego masz serwer http tylko przyjmować żądania i wysyłać odpowiedzi (np. w json). -------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 19.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Dobra szefie zrozumiałem
![]() ![]() A byłbyś jeszcze na tyle miły, że pokazać jakiś przykład jak te dane przekazać json? |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 207 Pomógł: 40 Dołączył: 2.06.2016 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Nie chodzi tutaj o szefowanie, ale jeżeli masz plik html z osadzonym js i w nim np. funkcję wykonajSQL(zapytanie), to chcę abyś był świadomy, że to jest wykonywana funkcja po stronie KLIENTA (czyt. po stronie przeglądarki zenka).
Co za tym idzie? - zenek może otworzyć konsolę i wpisać wykonajSQL('DROP TABLE `users`) i wiesz co się stanie? Przykład - najlepiej prześledź przykład podany na githubie. Wiem, że wygląda na obszerny projekt, ale niech cię to nie odstrasza, uważam, że krok po kroku, plik po pliku najlepiej poznasz praktyczne i w miarę prawidłowe zastosowanie tej technologii. A w razie pytań, kopiuj linikję pliku, której nie rozumiesz i pytaj tutaj ![]() Sam serwer na nodejs: https://github.com/lovelle/jquery-chat/blob.../node/server.js -------------------- |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 19.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
A z innej beczki. W czym najlepiej napisać dobry, bez lagów czat web dla 1000 osób online?
![]() |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 207 Pomógł: 40 Dołączył: 2.06.2016 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Myślę że nodejs i socket.io jest dobrym rozwiązaniem. Możesz zrobić to w c++ gcc, pythonie, albo jeżeli dobrze pamiętam chat facebooka (albo, któraś wersja) była napisana w erlangu.
PHP i ajax też dadzą radę (możesz też użyć websockets w php), a wydajność określa bardziej Twoja maszyna, konfiguracja i przede wszystkim rzetelność i przemyślanie kodu. Twoim obecnym problem, że zużywasz zasoby na niepotrzebnym odpytywaniu serwera na temat nowych wiadomości (ale to tylko domniemanie ![]() -------------------- |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 19.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
A w PHP + ajax da radę takowy zrobić? nodejs chyba mnie przerosło
![]() ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 7.06.2025 - 20:35 |