Сервер HTML WebSocket для обмена данными между различными браузерами

#html #websocket #phpwebsocket

#HTML #websocket #phpwebsocket

Вопрос:

Я пытался реализовать сервер сокетов HTML5 для трансляции всего, что он получает, всем подключенным клиентам, но безуспешно.

Я новичок в сокетах, может кто-нибудь посоветовать мне, есть ли что-нибудь уже доступное с открытым исходным кодом или что на самом деле нужно проверить для этого. Все, что я мог видеть, это связь между клиентом и сервером, но я никак не могу отправить данные с одного клиента на сервер другому клиенту или, проще говоря, сервер просто транслирует все сообщения всем своим подключенным клиентам??

Ответ №1:

Похоже, вы пытаетесь добиться одноранговой связи, что невозможно через websockets.

Было бы не очень сложно настроить быстрый сервер широковещательной передачи с помощью Node.js и CoffeeScript, который просто передает все, что он получает от одного сокета, всем остальным подключенным:

 net = require 'net'

Array::remove = (e) -> @[t..t] = [] if (t = @indexOf(e)) > -1

class Client
  constructor: (@socket) ->

clients = []

server = net.createServer (socket) ->
  client = new Client(socket)
  clients.push client

  socket.addListener 'connect', ->
    socket.write "Welcomern"

  socket.addListener 'data', (data) ->
    for c in clients when c isnt client
      c.socket.write data

  socket.addListener 'end', ->
    clients.remove client
    socket.end
.listen 4000

console.log "Chat server is running at localhost:4000"
  

Комментарии:

1. спасибо, но я получаю эту ошибку при попытке подключиться: ReferenceError: клиенты не определены на сервере.<анонимный> (C:UsersmhaqDesktoppython-socketcode.js:21:5 ) в Server.emit (events.js:67:17) в TCP.onconnection (net_uv.js:737:8) в чем может быть причина??

2. это проблема с отступом: clients = [] должно быть на той же глубине, что и назначение сервера

3. Если я помещаю строку «clients = []» после определения сервера, он запускается, но затем на стороне клиента я получаю: неперехваченная ошибка: INVALID_STATE_ERR: исключение DOM 11. Было бы очень полезно, если бы вы могли подсказать, в чем может быть причина.