【问题标题】:HTML WebSocket Server, For Communication between Different BrowsersHTML WebSocket 服务器,用于不同浏览器之间的通信
【发布时间】:2011-10-08 01:36:34
【问题描述】:

我一直在尝试实现 HTML5 套接字服务器,以将它接收到的任何内容广播到所有连接的客户端,但没有成功。

我是套接字的新手,如果有任何可用的开源或真正需要检查的东西,有人可以建议我吗?我只能看到客户端到服务器的通信,但是我无法将数据从一个客户端发送到服务器到另一个客户端,或者简单地说,服务器只是将所有消息广播到所有连接的客户端??

【问题讨论】:

    标签: html websocket phpwebsocket


    【解决方案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 "Welcome\r\n"
    
      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"
    

    【讨论】:

    • 谢谢,但是当我尝试连接时出现此错误:ReferenceError: clients is not defined at Server. (C:\Users\mhaq\Desktop\python-socket\code.js :21:5) 在 Server.emit (events.js:67:17) 在 TCP.onconnection (net_uv.js:737:8) 可能是什么原因??
    • 这是一个缩进问题:clients = [] 应该与服务器分配的深度相同
    • 如果我在服务器分配后添加“clients = []”行,它会运行,但在客户端我得到:未捕获的错误:INVALID_STATE_ERR:DOM 异常 11。如果你能,这将非常有帮助提出可能的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多