У меня вопрос, что лучше годится для реализации чата php или Node.JS?
2 Answers
на чистом пхп или node.js ты не напишешь чат, можно ajax'ом на JavaScript и php на сервере, но лучше jQuery на клиенте вместо javascript, ну можешь и свой node.js на сервер впихать))
- 583
- 2
- 7
- 24
socket.io + nodejs, JQuery вовсе не обязательно.
Использую эту связку вы сможете обеспечить истинную интерактивность при этом значительно сэкономить ресурсы сервера. Насколько я помню у тебя выделенный сервак? Если да то тут имхо без вариантов nodejs.
На php написать не проще ни разу, например простейший telnet чат в nodejs реализовивается примерно так:
var net = require('net');
var clients = [];
net.createServer(function(socket){
clients.push(socket);
socket.on('data', function(d) {
for(var i=0,l=socket.length; i<l; ++i) {
if(socket[i] !== socket) { socket[i].write(d) }
}
});
socket.on('end', function(socket) {
clients.splice(clients.indexOf(socket), 1);
})
}).listen('8088');
Чат с испольованием socket.io пишется не сложнее этого. Причем надо понимать разницу между nodejs и php - nodejs хранит состояние в отличии от php, таким образом чат можно написать вообще без использования базы данных, а при использовании nodejs совместно с socket.io вы получаете полноценный socket API. Таким образом в коде не будет тупого долбания сервера по setInterval.
Вообщем - экономится трафик, экономятся ресурсы сервера, гораздо большая гибкость, гораздо большая скорость разработки, гораздо больше возможностей. Думаю плюсы очевидны.
Из недостатков можно отметить лишь слабую поддержку браузеров opera (если не ошибаюсь 10.63+), но это не является большой проблемой т.к. это единственный слабоподдерживаемый браузер, например ИЕ поддерживается, если не ошибюсь - то-ли с 5.5 версии, то-ли с 6.0 версии(что, согласитесь - очень и очень круто).
@Миха Николаев - если планируешь писать что-либо серьезное или интересное - предлагаю свою помощь.
В любом случае, будь это элементарный слабонагруженый чат или полноценное высоконагруженное чат приложение - nodejs, однозначно, лучше подходит для этих целей, даже если не использовать socket.io (если так важна поддержка оперы 10.63-)
PS: здесь немного hello world кода с использованием nodejs и socket.io
-
Из недостатков можно отметить лишь слабую поддержку браузеров opera (если не ошибаюсь 10.63+), но это не является большой проблемой т.к. это единственный слабоподдерживаемый браузер, например ИЕ поддерживается, если не ошибюсь - то-ли с 5.5 версии, то-ли с 6.0 версии
Это вы про что ? Про Web-Socket API ?
в IE 6.0 ??? о_О
– Alex Kapustin Jan 10 '12 at 13:23 -
-
вы наверное шутите, Web-Socket API это детище html5.
возможно идет речь про какую то эмуляцию WebSocket Api на JS, без использования Flash ?
– Alex Kapustin Jan 10 '12 at 13:36 -
Даже если это эмуляция, но в коде вам плевать на это и, на деле, работает практически одинково - это имеет какоето значение? – Jan 10 '12 at 14:24
-
Да, меня интересует техническая сторона этого вопроса. Можете выдернуть JS для IE6 и разместить где то на пастебине ? Заранее благодарен. – Alex Kapustin Jan 10 '12 at 14:34
-
офф сайт, ставите nodejs, подымаете hello world socket.io сервер, смотрите исходники. – Jan 10 '12 at 17:04
В пхп можно сделать чат ajax'ом который обращается к пхп файлам, разбитым, например: 1 файл - 1 сервис), в каждом: приём GET(например опять же)) ), изъятие данных из базы, вывод - вот и всё, хотя так будет везде по идее
– Sleepless Jan 09 '12 at 22:19"который обращается к пхп файлам, разбитым, например: 1 файл - 1 сервис), в каждом: приём GET(например опять же)) ), изъятие данных из базы, вывод"
Это по вашему просто? Да и накладно для сервака "малеха", не находите?
– Jan 09 '12 at 22:44connect($login,"$pas"); $mes = get("mes"); insert("messages",$mes); $rez = $select("messages",""); for ($r = array();$r = mysql_fetch_assoc($rez), echo $r['text']);если тут принятие get-данных сделать функцией get, подключение к базе функцией connect, все mysql_query заменить на select, insert, (т.е. не заменить, а написать конкретные функции), то, чат будет работать так, а на клиенте jQuery, тож код небольшой)))) – Sleepless Jan 10 '12 at 10:15:DD
– Alex Kapustin Jan 10 '12 at 13:20