Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
4 / 4 / 0
Регистрация: 23.01.2015
Сообщений: 108

Чат

22.06.2019, 12:49. Показов 2394. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
(Надеюсь написал в правильную ветку)


мне на сайт нужно реализовать чат простой без каких либо наворотов так сказать что бы был .... я нашел в сети не мало решений и остановил свой взгляд вот на этом

не много скажем так доработал код на тему простой авторизации и отправки приватных сообщений

Мой вариант который я доработал


PHP
1
2
3
4
5
6
7
<?php
session_start();
if(isset($_POST['name'])){
$_SESSION['name'] = $_POST['name'];
}
 
?>
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<style>
 #WebChatFormForm{
  overflow: auto;
  max-height: 220px;
  width: 100%;
  /*max-width: 600px;*/
  overflow: auto;
  max-height: 900px;
 }
 
#WebChatNameID{
  margin-top:10px;
}
 
#WebChatTextID{
  max-width: 600px;
  max-height: 100px;
  width: 600px;
  margin-top:10px;
  display:block;
}
</style>

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://comet-server.com/CometServerApi.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
 
 
<script>
var timer = new Date();
function web_send_msg()
{
    // Getting values from input elements.
    var text = $("#WebChatTextID").val();
    var name = $("#WebChatNameID").val();
    var PrivatUser = $("#WebChatPrivatUserID").val();
    var User = $("#WebChatUserID").val();
 
    // Form cleaning
    $("#WebChatTextID").val("");
    $("#WebChatPrivatUserID").val("");
    $("#WebChatUserID").val("");
 
    // We will write the time at the time of sending the message
    timer = new Date();
 
    // Adding a sent message to the list of messages.
    //$("#WebChatFormForm").append("<p><b>"+HtmlEncode(name)+": </b>"+HtmlEncode(text)+"</p>");
 
    // Sending a message to the chat channel
    CometServer().web_pipe_send("web_chat_pipe", {"text":text, "PrivatUser":PrivatUser, "User":User, "name":name});
 
    // Notify the other tabs that we added a message to the chat
    comet_server_signal().send_emit("AddToChat", {"text":text, "PrivatUser":PrivatUser, "User":User, "name":name})
}
 
 
// The function will be executed in after the page loads.
$(document).ready(function()
{
    // Create a chat form. Layout.
   
    $("#web_chat_holder").html();
 
    // Subscribe to the channel in which chat messages will be sent.
    CometServer().subscription("web_chat_pipe", function(msg){
        console.log(["msg", msg]);
      
        // dding a received message to the list of messages.
        if(msg.data.PrivatUser == "<?php echo $_SESSION['name']; ?>"){
        $("#WebChatFormForm").append("<p>Приватное для Вас -> <b>"+HtmlEncode(msg.data.name)+": </b>" +HtmlEncode(msg.data.PrivatUser)+ ", " +HtmlEncode(msg.data.text)+"</p>");
        } else if(msg.data.PrivatUser == ''){
            $("#WebChatFormForm").append("<p><b>"+HtmlEncode(msg.data.name)+": </b>" +HtmlEncode(msg.data.User)+ ", " +HtmlEncode(msg.data.text)+"</p>");
        }
    });
 
    // We subscribe to the event of adding a message to the chat by us, so that if the chat is open in several tabs
    // our message added on one tab was displayed on all the others without reloading the page
    comet_server_signal().connect("AddToChat", function(msg){
        console.log(["msg", msg]);
        // Adding a received message to the list of messages.
        if(msg.PrivatUser !== ''){
        $("#WebChatFormForm").append("<p>Приватное от Вас -> <b>"+HtmlEncode(msg.name)+": </b>" +HtmlEncode(msg.PrivatUser)+ ", " +HtmlEncode(msg.text)+"</p>");
        } else if(msg.PrivatUser == ''){
        $("#WebChatFormForm").append("<p><b>"+HtmlEncode(msg.name)+": </b>" +HtmlEncode(msg.User)+ ", " +HtmlEncode(msg.text)+"</p>");
        }
    });
 
    // We subscribe to the channel in which the delivery notifications of the sent messages will be sent.
    CometServer().subscription("#web_chat_pipe", function(p)
    {
        // We will write the time at the time of receipt of the delivery report
        var etime = new Date();
 
        console.log(["answer_to_web_chat_pipe", p]);
        $("#answer_div").html("Message delivered "+p.data.number_messages+" recipients for "+ (etime.getTime() - timer.getTime() )+"ms");
        
    });
 
   // Download message history
   // CometServer().get_pipe_log("web_chat_pipe");
});
 
 
function HtmlEncode(s)
{
  var el = document.createElement("div");
  el.innerText = el.textContent = s;
  s = el.innerHTML;
  return s;
}
 
 
CometServer().start({dev_id:15})
 
 
</script>
HTML5
1
2
<div id="web_chat_holder"></div>
<div id="WebChatFormForm" ></div>
PHP
1
2
3
<?php
if(isset($_SESSION['name']) && $_SESSION['name'] != '' && $_SESSION['name'] != NULL){
?>
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<div style="position:fixed;bottom:0;border: 1px solid #ccc;padding:10px;" >
              <input type="text" id="WebChatPrivatUserID" placeholder="Кому приват">
              <input type="text" id="WebChatUserID" placeholder="Кому">
          <input type="text" id="WebChatNameID" placeholder="От кого"  value="<?php echo $_SESSION['name']; ?>" > <div id="answer_div" style="float:right;" ></div>
          
             <textarea id = "WebChatTextID" placeholder = "Send an online chat..." ></textarea>
 
                  <div style="margin-bottom: 0px;margin-top: 10px;">
                  <input type="button" style="width: 220px;" onclick="web_send_msg();" value="Send" >
                  <div id="answer_error"  style="float:right;" ></div>
                  </div>
             </div>
PHP
1
2
3
4
5
6
7
8
9
10
<?php
} else {
 
echo "<form action='' method='POST'>
<input type='text' name='name' placeholder='Ваш логин'>
<input type='submit' name='submit' value='Войти'>
</form>";
 
}
?>



Вопрос меня мучает такой (я понимаю что это фантастика но всё же) какая будет нагрузка на сервер и вообще на чат если будет большой онлайн?

И второе на сем лучше написать чат что бы нагрузки были не значительные?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.06.2019, 12:49
Ответы с готовыми решениями:

Часы и чат
Как делать часы в javascript? И как сделать чат?

Ajax чат в мультивкладках
Привет. Хотел бы узнать как можно реализовать такую штуку: есть простой ajax чат, который обновляет сообщения каждую секунду с сервера....

Как сделать чат?
Как сделать чат на js? хелпаните кто может)

8
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
22.06.2019, 21:22
Цитата Сообщение от s88s Посмотреть сообщение
какая будет нагрузка на сервер и вообще на чат если будет большой онлайн?
на чат никакой.
Цитата Сообщение от s88s Посмотреть сообщение
И второе на сем лучше написать чат что бы нагрузки были не значительные?
Вопросы не корректны.
Прогрессия нагрузки формируется кол-вом запросов относительно мощностей узла.
Продумайте например относительно возможностей своего сервера \ сети:
- сколько запросов на единицу времени примет, размер пакетов(представьте себе цикл с запросами к базе - рендерим последние 50 постов к примеру. Дальше разжевывать?).
- сколько места уйдет под базу, у Вас же хард не резиновый. Да... апгрейд, и то если он рентабелен. Чистим базу по тригеру - какому \ как часто ?
- характеристики камня \ кол-во оперативы, не забудьте вычесть потребности полностью настроенной системы. Подумайте как ограничить кол-во запросов и размер данных.

И это только сходу.... Думаю общую картину я Вам нарисовал - дальше разберетесь.
2
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
23.06.2019, 03:45
широко распространено мнение что чаты с большим онлайном лучше писать на Node.js
1
68 / 60 / 10
Регистрация: 07.03.2019
Сообщений: 657
26.06.2019, 18:45
Цитата Сообщение от klopp Посмотреть сообщение
мнение что чаты с большим онлайном лучше писать на Node.js
Полный бред.
0
27.06.2019, 01:49

Не по теме:

Цитата Сообщение от server_net Посмотреть сообщение
Полный бред.
и такое мнение тоже имеется

0
4 / 4 / 0
Регистрация: 23.01.2015
Сообщений: 108
27.06.2019, 14:59  [ТС]
И всё же на чем лучше написать чат?
0
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
27.06.2019, 15:57
s88s, на чем можете на том и напишите
предложенный мной вариант (Node) спокойно выдерживает over 10 000 сообщений в секунду
сомневаюсь что в вашем чате будет столько пользователей)))
поэтому,какой серверный язык знаете, на том и пишите.
1
4 / 4 / 0
Регистрация: 23.01.2015
Сообщений: 108
28.06.2019, 07:22  [ТС]
Я понял а вот то что я в первом посту кинул чат он как?
0
68 / 60 / 10
Регистрация: 07.03.2019
Сообщений: 657
28.06.2019, 11:01
Цитата Сообщение от klopp Посмотреть сообщение
over 10 000 сообщений в секунду
Это все зависит от мощности сервера, сколько за секунду он принимает запросы и т.д.

На каком языке писать нет разницы, js+php это очень хороший вариант.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.06.2019, 11:01
Помогаю со студенческими работами здесь

Чат-бот для вк
Всем привет, можете, пожалуйста, скинуть скрипт чат бота на java в формате .js Искал везде, не нашёл :D

ява, браузер и чат
Доброго времени суток, в ПХП файле есть скрипт явы function OpenMenu(login) { var el, x, y; el =...

Чат на web sockets
http://web.izjum.com/websocket-chat-on-nodejs Вот на этом сайте интересный пример. Но мне не понятно, на каком адресе будет запущен...

Чат исключительно на JavaScript
Добрый день, У меня такой вопрос, хочу сделать чат на клиенте на JS на серверной стороне будет Java. Может есть какой-то пример как...

Чат без запросов
Все время в интернете замечаю сайты на которых чат работает без запросов, пишешь сообщение и нет запросов, как это работает? Говорят...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru