HTML WebSocket 服务器,用于不同浏览器之间的通信

Posted

技术标签:

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

我一直在尝试实现 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 "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。如果你能,这将非常有帮助提出可能的原因。

以上是关于HTML WebSocket 服务器,用于不同浏览器之间的通信的主要内容,如果未能解决你的问题,请参考以下文章

websocket与ajax的区别浅析

WebSocket是什么?

websocket协议详解与抓包分析

SSL WebSocket 连接不适用于 webkit 浏览器?

html5的websocket怎么在服务器端配置php 你是怎么解决的

Socket.IO介绍:支持WebSocket用于WEB端的即时通讯的框架