@websiller

Веб сокеты в node js?

Здравствуйте! Каким образом использовать сокеты в node js ? То есть их писать прямо внутрь работающего сервера или как-то по другому. И для чего нужен socket.io ? Там вроде стандартная работа с сокетами не такая уж и низкоуровневая.

Вот пример (возможно очень тупо, я прост не знаю так можно или нет)
var http = require('http');
var url = require("url");
var WebSocketServer = require('ws').Server;

function start() {
	var server = http.createServer(function(req, res) {
		var path = url.parse(req.url).pathname;
		res.writeHead(200, { 'Content-Type': 'text/plain' });
		
		wss = new WebSocketServer({ port: 8888 });

		wss.on('connection', function (connection) {
			connection.send('Hello World');
		});

		res.end();
	});
	server.listen(3000);
}

exports.start = start;
  • Вопрос задан
  • 2195 просмотров
Решения вопроса 1
Xuxicheta
@Xuxicheta
инженер
Берем гугл, он отправляет нас на вики, где написано следующее
Socket.IO — JavaScript-библиотека для веб-приложений и обмена данными в реальном времени. Состоит из двух частей: клиентской, которая запускается в браузере и серверной для node.js. Оба компонента имеют похожее API. Подобно node.js, Socket.IO событийно-ориентированная.

Socket.IO главным образом использует протокол WebSocket, но если нужно, использует другие методы, например Adobe Flash сокеты, JSONP запросы или AJAX запросы[2], предоставляя тот же самый интерфейс. Помимо того, что Socket.IO может быть использована, как оболочка для WebSocket, она содержит много других функций, включая вещание на несколько сокетов, хранение данных, связанных с каждым клиентом, и асинхронный ввод/вывод

Может быть установлена через npm (node package manager)


А что такое "прямо внутрь работающего сервера"?
Приложение на node.js это процесс, который может слушать сетевые соединения, если это ему нужно.
Может слушать http и websocket, может не слушать. Можно в другом приложении организовать обмен через сокеты, можно в этом же. Как вам будет угодно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@de1m
Я бы посоветовал всё таки использовать socket.io он может не только websocket, но и GET и POST для клинтов, которые не могут websocket.
В вашем варианте плохо то, что надо два порта и я так понимаю их будет четыре если ещё добавить https.
Вот пример с socket.io
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var mkdirp = require('mkdirp');

var appPort = process.env.APPPORT || "5000"

app.set('views', __dirname + '/app/views')
app.set('view engine', 'pug')
app.use(express.static(__dirname + '/public'))

server.listen(appPort, function () {
  console.log('Server listening at port %d', appPort);
});

//App components
var routes = require('./app/routes');

app.use('/', routes);

io.attach(server);

var socket = require('./app/socket');
socket.start(io);

В папке app/socket лежит остальное, подробней можно посмотреть тут

Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы