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

Чат

22.06.2019, 12:49. Показов 2417. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru