有没有办法或扩展,让我看到通过WebSocket的"流量"?出于调试目的,我想查看客户端和服务器请求/响应.
因此,我希望建立一个允许视频,音频和文本的聊天应用程序.我花了一些时间研究Websockets和WebRTC来决定使用哪个.由于WebRTC有很多视频和音频应用程序,这听起来是一个合理的选择,但还有其他我应该考虑的事情吗?随意分享您的想法.
像:
由于新的WebRTC仅在某些浏览器上可用,而websockets似乎在更多的浏览器中.
可伸缩性 - Websockets使用服务器进行会话,而WebRTC似乎是p2p
多路复用/多个聊天室 - 用于Google+环聊,我仍然可以查看有关如何实施的演示应用
服务器 - Websockets需要RedisSessionStore或RabbitMQ来扩展多台计算机
我正在使用socket.io和node.js,直到现在看起来还不错,但我不知道如何从服务器向特定客户端发送消息,如下所示:
client.send(message, receiverSessionId)
Run Code Online (Sandbox Code Playgroud)
但是这些.send()和.broadcast()方法似乎都不能满足我的需要.
我发现作为一种可能的解决方案是,该.broadcast()方法接受一个不发送消息的SessionIds数组作为第二个参数,因此我可以将当前连接的所有SessionId的数组传递给服务器,除了一个我希望发送消息,但我觉得必须有更好的解决方案.
有任何想法吗?
看起来很容易使用任何支持此功能的HTTP头客户端向您的websocket客户端添加自定义HTTP标头,但我无法找到如何使用JSON API执行此操作.
任何人都知道如何实现它?
var ws = new WebSocket("ws://example.com/service");
Run Code Online (Sandbox Code Playgroud)
具体来说,我需要能够发送HTTP授权标头.
我已经阅读了WebSockets,我想知道为什么浏览器不能简单地打开简单的TCP连接并像其他任何桌面应用程序一样与服务器通信.为什么通过websockets进行这种通信?
我正在尝试使用我的SSL证书运行socket.io但是,它将无法连接.
我将我的代码基于聊天示例:
var https = require('https');
var fs = require('fs');
/**
* Bootstrap app.
*/
var sys = require('sys')
require.paths.unshift(__dirname + '/../../lib/');
/**
* Module dependencies.
*/
var express = require('express')
, stylus = require('stylus')
, nib = require('nib')
, sio = require('socket.io');
/**
* App.
*/
var privateKey = fs.readFileSync('../key').toString();
var certificate = fs.readFileSync('../crt').toString();
var ca = fs.readFileSync('../intermediate.crt').toString();
var app = express.createServer({key:privateKey,cert:certificate,ca:ca });
/**
* App configuration.
*/
...
/**
* App routes.
*/
app.get('/', function (req, res) { …Run Code Online (Sandbox Code Playgroud) 我很好奇是否有人有关于HTML WebSockets可伸缩性的任何信息.对于我所阅读的一切,似乎每个客户都将与服务器保持开放的通信线路.我只是想知道如何扩展以及服务器可以处理多少个打开的WebSocket连接.也许将这些连接保持开放并不是现实中的问题,但感觉就像是这样.
我正在构建需要使用套接字连接与另一个应用程序通信的Web应用程序.这对我来说是一个新领域,所以要确保套接字不同于websockets.看起来它们只是在概念上相似.
问起因为我最初计划使用Django作为我的项目的基础,但是在上面链接的SO帖子中,很明显webocket是不可能的(或者至少不可靠,即使像django-websockets这样的东西也是如此)使用首选的Django设置(Apache与mod_wsgi).然而,我发现其他帖子随便导入Python的套接字模块,就像获取服务器的主机名一样简单.
所以:
为了尽可能地了解TCP套接字和websocket之间的差异,我已经在这些问题中找到了很多有用的信息:
等等...
在我的调查中,我在维基百科上看了这句话:
Websocket与TCP的不同之处在于它启用了消息流而不是字节流
我不完全确定它究竟意味着什么.你有什么解释?
我想在我的Android应用程序中添加一个服务,该应用程序在后台运行,持有WebSocket连接(可能需要几个小时甚至几天),并定期将一些数据发送到服务器.
现在似乎有一堆用于Java的WebSocket库,我不确定应该使用哪一个:
来自GitHub的 TooTallNate/Java-WebSocket描述:用100%Java编写的准系统WebSocket客户端和服务器实现.http://java-websocket.org/ - 这是我在google搜索"android websocket"的第一个结果中链接的.但是,它有很多未解决的问题,尤其是关于SSL连接的问题,目前似乎没有积极维护.
来自GitHub的 koush/AndroidAsync描述:用于android的异步套接字,http(客户端+服务器),websocket和socket.io库.基于nio,而不是线程. - 许多公开问题,但似乎是维持/工作的活动.
项目Tyrus 来自网站的描述:JSR 356:用于WebSocket的Java API - 参考实现 - 这是由Oracle完成的.不确定它是否适用于Android.
来自网站的 Jetty WebSocket客户端API信息:Jetty还提供了一个Jetty WebSocket客户端库,可以更轻松地与WebSocket服务器进行通信. - 再次:不确定它是否适用于Android.
codebutler/android-websockets 来自GitHub的描述: Android的裸网最小websockets(hybi13/RFC)客户端 - 这个用于 schwiz/android-websocket-example,这是StackOverflow问题的接受答案"如何制作Android设备是否在没有唤醒锁定的情况下保持与Internet的TCP连接? "
来自GitHub的 Atmosphere/wasync描述:带有回退的WebSockets传输Node.js,Android和Java的客户端库 http://async-io.org
TakahikoKawasaki/nv-websocket-client 来自GitHub的描述:Java中的高质量WebSocket客户端实现.
square/okhttp
来自GitHub的描述:适用于Android和Java应用程序的HTTP + SPDY客户端.http://square.github.io/okhttp/
-它有一个Websocket模块.正如 scorpiodawg所提到的,OkHttp自3.5版以来就内置了websocket支持.
来自GitHub的 firebase/TubeSock说明:用Java实现的WebSocket客户端库
Autobahn | Android(GitHub) 网站描述:Autobahn | Android是一个用于Java/Android的开源网络库,由Autobahn项目创建,实现WebSocket协议和Web应用程序消息传递协议(WAMP),用于创建本机移动WebSocket/WAMP客户端.- cloudsurfin指出,这不支持wss.
此外,Android …