标签: websocket

WebSocket请求 - 响应子协议

WebSocket提供像人类谈话一样的双向通信.客户端可以将数据发送到服务器,服务器可以随时向客户端发送数据.但那个问题呢?请求 - 响应行为?客户端可以向服务器询问某些内容并等待响应.似乎Websocket没有提供将客户端数据(请求)链接到服务器数据(响应)的任何内容.

这可能是子协议的工作,我有一些关于如何做的想法(发送带有请求的id并等待具有相同id的响应,直到超时时间).

为了不重新制作轮子并节省一些时间,我查看了互联网上的现有解决方案,但我没有找到任何相关的(可能是坏关键字).

那么有没有人意识到这种工作或者我错过了什么?

websocket

69
推荐指数
3
解决办法
4万
查看次数

webhook和websocket之间的差异

我一直想做一个实时聊天.

我几年前在PHP + Ajax + Mysql中完成了这项工作并破坏了我的服务器.然后我尝试使用Flash +文本文件.我放弃了,并没有在10年内尝试过.但最近我听说过webhooks和websockets.他们似乎都是一种方法,但我并没有完全掌握其中的差异.谁能解释一下?

webhooks websocket

69
推荐指数
2
解决办法
3万
查看次数

使用webSocket向特定的已连接用户发送消息?

我写了一个代码,用于向所有用户广播消息:

二手代码:( 简要)

// websocket and http servers
var webSocketServer = require('websocket').server;

...
...
var clients = [ ];

var server = http.createServer(function(request, response) {
    // Not important for us. We're writing WebSocket server, not HTTP server
});
server.listen(webSocketsServerPort, function() {
  ...
});

var wsServer = new webSocketServer({
    // WebSocket server is tied to a HTTP server. 
    httpServer: server
});


    // This callback function is called every time someone
    // tries to connect to the WebSocket server
    wsServer.on('request', …
Run Code Online (Sandbox Code Playgroud)

javascript html5 websocket node.js

68
推荐指数
3
解决办法
7万
查看次数

websockets是否允许p2p(浏览器到浏览器)通信?

为了澄清何时我询问浏览器与浏览器之间的通信,我的意思是在转发消息之间没有服务器.我想为游戏实现这样的东西.如果不能在websockets中使用p2p,是否有类似的替代方案?任何帮助表示赞赏.

javascript ajax p2p websocket

67
推荐指数
3
解决办法
4万
查看次数

websocket自动关闭连接

我正在java中构建一个具有基于jetty的嵌入式websocket服务器的应用程序.客户端是Google Chrome中的默认websocket实现.只有在连接关闭一定时间后服务器和客户端之间没有传输时,一切正常.我不确定谁正在关闭连接:jetty服务器或chrome浏览器.

我认为解决方案是每隔x秒发送一条消息,但我打开了更好的解决方案.

所以......我的问题是:

  1. 这是websocket协议所需要的东西吗?在这种情况下,chrome浏览器正在关闭我的连接?

  2. 这是否与jetty相关并且或多或少与websocket协议有关?在这种情况下,如何在码头禁用此功能?

  3. 还有其他问题吗?

谢谢

更新:即使我发送1条消息/秒仍然关闭连接

javascript java google-chrome jetty websocket

67
推荐指数
5
解决办法
11万
查看次数

如何使用Firebug或其他方法查看WS/WSS Websocket请求内容?

有没有办法查看Websocket流量?

初始握手时只能看到Websocket标头.

回应后一切都消失了:

Connection  Upgrade
Sec-WebSocket-Accept    EQqklpK6bzlgAAOL2EFX/nx8bEI=
Upgrade WebSocket
Run Code Online (Sandbox Code Playgroud)

我已经尝试过Firebug,Live Headers和Fiddler2来跟踪交换,他们都停止在那里登录.

firebug fiddler websocket

66
推荐指数
4
解决办法
7万
查看次数

Websocket onerror - 如何读取错误描述?

我一直在开发基于浏览器的多人游戏一段时间,我一直在各种环境(客户办公室,公共wifi等)测试不同的端口可访问性.一切都很顺利,除了一件事:我无法弄清楚如何读取错误号.或收到onerror事件时的描述.

客户端websocket是在javascript中完成的.

例如:

// Init of websocket
websocket = new WebSocket(wsUri);
websocket.onerror = OnSocketError;
...etc...

// Handler for onerror:
function OnSocketError(ev)
{
    output("Socket error: " + ev.data);
}
Run Code Online (Sandbox Code Playgroud)

'output'只是一些写入div的实用函数.

我得到的是ev.data的'undefined'.总是.我一直在谷歌搜索,但似乎没有关于这个事件有什么参数以及如何正确阅读它的规范.

任何帮助表示赞赏!

javascript html5 websocket

66
推荐指数
2
解决办法
9万
查看次数

如何在端口80上运行Node.js?

我的目标是在端口80上运行Node.js.这是因为我发现node.js被阻止某些不允许来自任何其他端口的流量的网络.

看来最好的方法是通过Node.js代理Apache.我曾尝试使用node-http-proxy来做到这一点,但我没有运气.

我正在使用的代码在这里:

var util = require('util'),
    http = require('http'),
    httpProxy = require('http-proxy');

httpProxy.createServer(9000, 'localhost').listen(80);

http.createServer(function (req, res) {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2));
  res.end();
}).listen(9000);
Run Code Online (Sandbox Code Playgroud)

但我不断收到端口80的错误"正在使用的地址".我一定是做错了.

如何使用node-http-proxy通过node.js代理Apache?这会让我在端口80上运行node.js吗?node-http-proxy是实现这一目标的最佳方式吗?

谢谢.

apache proxy websocket node.js

65
推荐指数
6
解决办法
7万
查看次数

WebSockets ping/pong,为什么不用TCP keepalive?

WebSockets 可以选择将ping发送到另一端,另一端应该用pong响应.

收到Ping帧后,端点必须发送Pong帧作为响应,除非它已经收到一个关闭帧.它应该尽快响应Pong框架.

TCP 以keepalive的形式提供类似东西:

[Y]你向对等体发送一个keepalive探测包,其中没有数据,并且ACK标志打开.您可以这样做是因为TCP/IP规范,作为一种重复的ACK,并且远程端点将没有参数,因为TCP是面向流的协议.另一方面,您将收到来自远程主机的回复(根本不需要支持keepalive,只需TCP/IP),没有数据和ACK设置.

我认为TCP keepalive效率更高,因为它可以在内核中处理而无需将数据传输到用户空间,解析websocket框架,制作响应框架,然后将其交回内核进行传输.它也减少了网络流量.

此外,WebSockets 被明确指定为始终在TCP上运行; 它们不是传输层不可知的,因此TCP keepalive始终可用:

WebSocket协议是一种独立的基于TCP的协议.

那么为什么人们会想要使用WebSocket ping/pong而不是TCP keepalive?

tcp keep-alive websocket

63
推荐指数
4
解决办法
4万
查看次数

在现代浏览器中上传文件的最佳方式是什么?

我想将(单个)文件上传到服务器并显示上传的进度.

我知道我可以使用HTTP POST上传文件.我不熟悉网络套接字,但据我所知,二进制数据也可以通过这种方式发送,因为websockets是双向的,我可以获得上传的进度.

我不担心旧浏览器,所以iframe和flash解决方案不是很吸引人,除非在这条路线上有显着的优势.

我也很好奇最好的服务器端技术.使用像Django这样的wsgi服务器有什么好处?或者像Node.js这样的非阻塞I/O技术?我不是在问web框架x是否优于web框架y,或者服务器x是否优于服务器y.但只是理想的技术应该具有什么才能在客户端设置上传.

更新:服务器端似乎与客户端上可用的技术/ API无关,以方便上传.

javascript django file-upload http websocket

63
推荐指数
3
解决办法
2万
查看次数