2011-10-08 63 views
0

我一直在试图实现HTML5套接字服务器来广播它收到的所有连接的客户端,但没有成功。HTML WebSocket服务器,用于不同浏览器之间的通信

我是新来的套接字,如果有什么已经存在的开源或有什么东西需要检查。我只能看到客户端到服务器的通信,但是我无法将数据从一个客户端发送到另一个客户端,或者简单地说,服务器只是将所有消息广播到所有连接的客户端?

回答

0

这听起来像你试图实现点对点通信,这是不可能通过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" 
+0

感谢,但我当我尝试连接时出现此错误: ReferenceError:客户端未在服务器上定义为 。在TCP.onconnection(net_uv.js:737:8)处Server.emit(events.js:67:17) (C:\ Users \ mhaq \ Desktop \ python-socket \ code.js:21:5) ) 可能是什么原因? – Johnydep

+0

这是一个缩进问题:clients = []应该在与服务器分配相同的深度 – Mike

+0

如果我在服务器assingment后放行“clients = []”,它会运行,但是在客户端我得到:Uncaught错误:INVALID_STATE_ERR :DOM异常11.如果你能提出可能的原因,这将是非常有帮助的。 – Johnydep