Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2016, 21:45   #1
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию Пример консольного чата на C# и Node.js

Сделал пример консольного чата. Авось кому-нибудь пригодится. К каждой строке кода написал комментарий.

Для запуска примера вам нужно поставить node.js

Потом запустить сервер. Для этого запустить cmd.exe, перейти в папку с файлом server.js (см. ниже) и ввести команду: node server.js

В Visual Studio нужно открыть NuGet и поставить пакет: SocketIoClientDotNet

Консольный клиент на C#:
Код:
using System;

namespace ConsoleChatBySocketIoClientDotNet
{
    class Program
    {
        static void Main(string[] args)
        {
            // Создаём сокет
            var socket = Quobject.SocketIoClientDotNet.Client.IO.Socket("http://localhost:1337");

            // Принимаем сообщение и выводим на экран
            socket.On("message", (data) =>
            {
                // Переходим на новую строку
                Console.WriteLine();
                // Выводим принятое сообщение на экран
                Console.WriteLine("Ответ: " + data);
                // Выводим приглашение ввести сообщение
                Console.Write("Введите сообщение: ");
            });

            while (true)
            {
                // Выводим приглашение ввести сообщение
                Console.Write("Введите сообщение: ");
                // Читаем сообщение из консоли
                string mess = Console.ReadLine();
                // Отправляем сообщение на сервер
                socket.Emit("message", mess);
            }
        }
    }
}
server.js:
Код:
// Подключаем нужные библиотеки
var io = require('socket.io')(process.env.PORT || 1337);
var shortid = require('shortid');

// Выводим сообщение, что клиент запущен
console.log('server started');

// Это функция вызывается, как только подключается клиент
io.on('connection', function (socket) {

	// Генерируем ID для подсоединившегося клиента, т.е. для текущего
    var thisClientId = shortid.generate();

	// Выводим ID текущего клиента
    console.log('client connected, broadcasting spawn, id: ', thisClientId);
	
	// Отправляем сообщение всем клиентам
	socket.broadcast.emit(thisClientId + ' is connected');
	
	// Принимаем сообщение и отсылаем остальным клиентам
	socket.on('message', function (data) {
		// Выводим принятое сообщение в консоль
		console.log('from server: ' + data);
		// Пересылаем принятое сообщение остальным клиентам
		socket.broadcast.emit('message', data + '(from id/' + thisClientId + ')');
	});
	
	// Выводим сообщение, что клиент отсоединился
	socket.on('disconnect', function () {
        console.log('client disconnected');
    });
});
Изображения
Тип файла: jpg ConsoleChatBySocketIoClientDotNet_001.jpg (37.2 Кб, 166 просмотров)

Последний раз редактировалось 8Observer8; 15.05.2016 в 23:36.
8Observer8 вне форума Ответить с цитированием
Старый 16.05.2016, 03:51   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию Пример чата на WPF+Node.js

Во вложении исходники моего WPF+Node.js чата (файл server.js лежит в папке Server)
Вложения
Тип файла: zip ChatBySocketIoClientDotNet.zip (13.4 Кб, 54 просмотров)
8Observer8 вне форума Ответить с цитированием
Старый 05.06.2016, 20:59   #3
Wadimka
Пользователь
 
Регистрация: 03.02.2009
Сообщений: 20
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Во вложении исходники моего WPF+Node.js чата (файл server.js лежит в папке Server)

а есть таже реализация клиента но только на DelphI?
с си не дружу да и тут нужен компонент клиента для delphi
заранее благодарен
Wadimka вне форума Ответить с цитированием
Старый 24.01.2017, 18:45   #4
Rob_Ing
Новичок
Джуниор
 
Регистрация: 22.01.2017
Сообщений: 2
По умолчанию

Добрый день.

Не получается скомпилировать клиента: ошибка - CS0103 Имя "Quobject" не существует в текущем контексте.

Прошу помочь, может я что-то не так сделал. программирую на VS2015 Community
Rob_Ing вне форума Ответить с цитированием
Старый 24.01.2017, 21:17   #5
Rob_Ing
Новичок
Джуниор
 
Регистрация: 22.01.2017
Сообщений: 2
По умолчанию

Проблему решил. Спасибо за предоставленный чат
Rob_Ing вне форума Ответить с цитированием
Старый 21.01.2020, 18:11   #6
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Добавлю, что SocketIoClientDotNet нужно ставить через NuGet, версия выбранного фреймворка .NET должна быть 4.5 и выше.

В папке, где вы создали скрипт socket.js нужно ввести команды:
  • npm init -y
  • npm i socket.io shortid

Автор SocketIoClientDotNet написал в описании на GitHub, что проект объявлен deprecated и не будет больше поддерживаться. Но при этом он написал здесь, что:
Цитата:
I use this library in my own project. The last version that works with my project is 1.0.2
То есть он продолжает использовать библиотеку в своих проектах. Я думаю, что данную библиотеку можно использовать, по крайней мере, в .NET 4.5, но обнаруженные баги автор исправлять не будет. Можно при желании разбираться в исходниках и исправлять самому, если будут баги.

Используются следующие зависимости:
Цитата:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EngineIoClientDotNet" version="0.9.22" targetFramework="net45" />
<package id="Newtonsoft.Json" version="8.0.1" targetFramework="net45" />
<package id="SocketIoClientDotNet" version="0.9.13" targetFramework="net45" />
<package id="WebSocket4Net" version="0.14.1" targetFramework="net45" />
</packages>
Можно использовать WebSocket4Net напрямую. Этот пакет актуален.

Последний раз редактировалось 8Observer8; 21.01.2020 в 19:21.
8Observer8 вне форума Ответить с цитированием
Старый 21.01.2020, 19:14   #7
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Если захотите развернуть сервер на бесплатном хостинге Heroku, то нужно изменить адрес в C# клиенте следующим образом:

Код:
var socket = Quobject.SocketIoClientDotNet.Client.IO.Socket("ws://имя-вашего-приложения.herokuapp.com");
Я проверил - работает!
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Начало работы с Node.js ACE Valery Общие вопросы Web 27 28.01.2016 11:52
Онлайн игра на Node.js + SockJS или socket.io / Node.js freerunner JavaScript, Ajax 2 17.04.2014 11:01
IDE для Node.js ACE Valery Общие вопросы Web 7 22.01.2013 15:08
Проблема с Node Indent kettanaito Общие вопросы Delphi 3 05.12.2011 01:44