精华内容
下载资源
问答
  • 愚蠢的 WebSocket TCP 代理 (SWTP) 描述 一个非常愚蠢的 WebSocket 服务器,用于代理 TCP 连接(使用带有未修改 TCP 服务器的 websockets)。 不要重新发明轮子,使用带有这个 STUPID 代理的现有 tcp 服务器。 它...
  • Websockify是一个WebSocketTCP代理/桥梁。实现让让浏览器可以连接至任何应用程序/服务器/服务。采用Python, C, Node.js 和Ruby。
  • websocket协议转tcp协议的代理

    万次阅读 2016-01-07 19:51:01
     原先有个页游的项目,需要移植到手机上,做手机页游,也就是到html5(h5)版本,面临一个问题:原先服务器和客户端(flash)通信用的是tcp协议,而h5用的是websocket,虽然也也是用来传输二进制的,但毕竟原先的...
    背景:
    
           原先有个页游的项目,需要移植到手机上,做手机页游,也就是到html5(h5)版本,面临一个问题:原先服务器和客户端(flash)通信用的是tcp协议,而h5用的是websocket,虽然也也是用来传输二进制的,但毕竟原先的服务器不认识websocket的握手协议以及中间传输的帧协议,又不想改动服务器的c++代码来做这个恶心的适配,怎么办? 

    解决:

          组内最近有同事在研究go,就让其用go语言实现了一个websocket代理,把websocket数据包去掉websocket的协议内容,只把真正的数据转发到原先的服务器上。 

         代码很简单,经过测试性能也不错,代码丢在了github上,有需要的可以去看:

         https://github.com/zxb19890727/websocket_transfer#websocket_transfer

    展开全文
  • wstcp WebSocket以Rust编写的TCP代理 安装预编译的二进制文件在Rust编写的pag wstcp WebSocket to TCP代理发行版中提供了Linux环境的预编译二进制文件。 安装预编译的二进制文件在发行页面上可以找到Linux环境的预...
  • WebSocket转发TCP

    千次阅读 2020-08-27 15:25:51
    通过WebSocket转发TCP协议数据 [tcp 服务,如sshd] | | <= TCP | [zserver 服务端] || || <= WebSocket || [nginx等] || || <= WebSocket || [ztun客户端] | | <= TCP | [tcp

    1 需求背景

    某些特殊原因,不能访问某些内部服务器,或服务器只开放HTTP或HTTPS端口,为了连接ssh等服务(其实有安全的方法:跳板机,这里不讲安全)

    2 方案

    通过WebSocket转发TCP协议数据

    [tcp 服务,如sshd]
     |
     |  <= TCP
     |
    [zserver 服务端]
     ||
     || <= WebSocket
     ||
    [nginx等]
     ||
     || <= WebSocket
     ||
    [ztun客户端]
     |
     | <= TCP
     |
    [tcp客户端,如secureCRT]

    3 代码

    客户端:https://github.com/zzpu/ztun

    服务端:https://github.com/zzpu/zserver

    4 效果

     

    展开全文
  • TCPWebSocket桥/代理JavaScript实现。 版权所有(C)2015-DenoFiend(github.com/denofiend) 根据LGPL-3许可。 有关更多信息,请参见github.com/denofiend/tcp_to_websocket。 安装并运行 $ npm install $ ...
  • 1、代理服务基于go语言实现 2、代理服务源码 package main import ( "flag" "fmt" "log" "net" "net/http" "os" "runtime" "github.com/gorilla/websocket" ) var g_tcpAddress string var ...

    1、websocketproxy代理服务基于go语言实现

     

    2、功能描述:Proxy of gateway. Websockt transfer TCP protocol.

    (1) Websocket -> TCP
    (2)TCP -> Websocket

    即:实现将websocket通信代理到TCP通信,实现web客户端通过websocket通信与后台TCP服务器之间的数据交互。

     

    3、使用方法:讲go源码编译出可执行程序:

     

    4、查看websocketproxy代理服务进程是否启动 及 启动代理的方法:

    (1)查看命令:ps -elf | grep websocketproxy

    websocketproxy没有启动状态:

    (2)启动websocketproxy进程:

    ./websocketproxy 按下enter会提示启动方法:

    (3)启动websocketproxy进程命令:./websocketproxy -host=127.0.0.1:554 -port=8081

    (4)另起一个终端,查看websocketproxy进程是否启动:ps -elf | grep websocketproxy

    如下图:则说明websocketproxy进程已经启动:

    或者使用命令: ./websocketproxy -host=127.0.0.1:554 -port=8081 &

    将websocketproxy进程在后台运行:

    (5)启动websocketproxy进程的命令行解释:./websocketproxy -host=127.0.0.1:554 -port=8081 &

    1)host=127.0.0.1:台服后务器TCP通信的ip地址

    2)554:  后台服务器TCP通信所监听的端口

    3)port=8081:建立websocket所使用的端口号,如:ws://127.0.0.1:8081/tztek/test

    4)&: 将该进程放在后台运行

    5)其他说明:将websocket通信所使用的8081端口的消息代理到tcp通信的554端口,实现消息交互。

     

    5、使用举例:

    (1)功能:实现将websocket通信所使用的8081端口的消息代理到easydarwin流媒体服务器的tcp通信的554端口,实现web客户端和easydarwin流媒体服务器之间的消息交互。

    (2)步骤:

    1)下载并进入easydarwin流媒体服务应用程序所在文件夹(自备):

    2) 查看easydarwin.ini配置文件信息,查询tcp通信端口号,vim easydarwin.ini:

    查询tcp通信端口号为:554

      1 [http]
      2 port=10008
      3 default_username=admin
      4 default_password=admin
      5 
      6 [rtsp]
      7 port=554
      8 
      9 ; rtsp 超时时间,包括RTSP建立连接与数据收发。
     10 timeout=28800
     11 
     12 ; 是否使能gop cache。如果使能,服务器会缓存最后一个I帧以及其后的非I帧,以提高播放速度。但是可能在高并发的情况下带来内存压力。
     13 gop_cache_enable=1
     14 
     15 ; 是否使能推送的同事进行本地存储,使能后则可以进行录像查询与回放。
     16 save_stream_to_local=1
     17 
     18 ;easydarwin使用ffmpeg工具来进行存储。这里表示ffmpeg的可执行程序的路径
     19 ffmpeg_path=/usr/local/ffmpeg/bin/ffmpeg
     20 
     21 ;本地存储所将要保存的根目录。如果不存在,程序会尝试创建该目录。
     22 m3u8_dir_path=/home/xuwei/xuwei/record
     23 
     24 ;切片文件时长。本地存储时,将以该时间段为标准来生成ts文件(该时间+一个I帧间隔),单位秒
     25 ts_duration_second=10
     26 
     27 ;ffmpeg转码格式,比如可设置为-c:v copy -c:a copy,表示copy源格式;default表示使用ffmpeg内置的输出格式,可能需要转码
     28 /stream_265=default

    3)启动easydarwin流媒体服务器:./easydarwin

    如下:则启动成功

     

    4)启动websocketproxy进程,将websocket通信所使用的8081端口的消息代理到easydarwin流媒体服务器的tcp通信的554端口,实现web客户端和easydarwin流媒体服务器之间的消息交互。

    命令:./websocketproxy -host=127.0.0.1:554 -port=8081 &

    5)编写websocket通信demo,测试代理是否成功:

    websocket通信demo源码如下:

    <!DOCTYPE HTML>
    <html>
    
    <head>
      <meta charset="utf-8">
      <title>websocket通信代理测试</title>
    
      <script type="text/javascript">
        function WebSocketTest() {
          //1.创建websocket客户端
          var wsServer = 'ws://127.0.0.1:8081/tztek/test';
          var limitConnect = 30; // 断线重连次数
          var timeConnect = 0;
          webSocketInit(wsServer);
    
          //socket初始化
          function webSocketInit(service) {
            var ws = new WebSocket(service);
            console.log("ws == ", ws);
            ws.onopen = function () {
              console.log("已连接TCP服务器");
            };
            ws.onmessage = function (msg) {
              console.log(msg.data  );
            };
            ws.onclose = function () {
              console.log('服务器已经断开');
              reconnect(service);
            };
    
            // 重连
            function reconnect(service) {
              if (limitConnect > 0) {
                limitConnect--;
                timeConnect++;
                console.log("第" + timeConnect + "次重连");
                // 进行重连
                setTimeout(function () {
                  webSocketInit(service);
                }, 2000);
    
              } else {
                console.log("TCP连接已超时");
              }
            }
    
            // 心跳 * 回应
            // setInterval(function () {
            //   ws.send('xw_ping');
            // }, 1000 * 5);
    
          }
    
        }
      </script>
    
    </head>
    
    <body>
    
      <div id="sse">
        <a href="javascript:WebSocketTest()">运行 WebSocket</a>
      </div>
    
    </body>
    
    </html>

    测试现象及结果:

    结果表明:

    a.建立websocket成功

    b.代理服务端口转发成功(未放截图),现象描述:web客户端能通过8081端口和easydarwin流媒体服务器之间实现数据交互。

    6)其他:本web客户端测试demo,还具备断线重连 + 心跳检测(保活)功能:

    a.关闭服务进程:killall websocketproxy

    b.重启websocketproxy服务进程:./websocketproxy -host=127.0.0.1:554 -port=8081 &

     

     

     

    6、附WebsocketProxy.go代理服务源码

    package main
    
    import (
    	"flag"
    	"fmt"
    	"log"
    	"net"
    	"net/http"
    	"os"
    	"runtime"
    
    	"github.com/gorilla/websocket"
    )
    
    var g_tcpAddress string
    
    var upgrader = websocket.Upgrader{
        CheckOrigin: func(r *http.Request) bool {
            return true
        },
    }
    
    func copyW2TWorker(dst net.Conn, src *websocket.Conn, doneCh chan<- bool) {
    	defer func() {
    		doneCh <- true
    	}()
    
    	for {
    		_, message, err := src.ReadMessage()
    		if err != nil {
    			//log.Fatalln("[copyW2TWorker] websocket ReadMessage failed! err=%v", err)
    			return
    		}
    
    		log.Printf("type=%d recv=%s", websocket.BinaryMessage, message)
    		_, err = dst.Write([]byte(message))
    		if err != nil {
    			//log.Fatalln("[copyW2TWorker] tcp Write failed! err=%v", err)
    			return
    		}
    	}
    }
    
    func copyT2WWorker(dst *websocket.Conn, src net.Conn, doneCh chan<- bool) {
    	defer func() {
    		doneCh <- true
    	}()
    
    	buff := make([]byte, 1024)
    	for {
    		n, err := src.Read(buff)
    		if err != nil {
    		//	log.Fatalln("[copyT2WWorker] tcp Read failed! err=%v", err)
    			return
    		}
    
    		log.Printf("T2W type = %d read message = %s\n", websocket.BinaryMessage, string(buff[:n]))
    		err = dst.WriteMessage(websocket.BinaryMessage, buff[:n])
    		if err != nil {
    			//log.Fatalln("[copyT2WWorker] websocket WriteMessage failed! err=%v", err)
    			return
    		}
    	}
    }
    
    func relayHandler(w http.ResponseWriter, r *http.Request) {
    	ws, err := upgrader.Upgrade(w, r, nil)
    	if err != nil {
    		log.Print("upgrade:", err)
    		return
    	}
    
    	conn, err := net.Dial("tcp", g_tcpAddress)
    	if err != nil {
    		log.Printf("[ERROR] %v host [%v]\n", err, g_tcpAddress)
    		return
    	}
    
    	doneCh := make(chan bool)
    
    	go copyW2TWorker(conn, ws, doneCh)
    	go copyT2WWorker(ws, conn, doneCh)
    
    	<-doneCh
    	conn.Close()
    	ws.Close()
    	<-doneCh
    }
    
    func usage() {
    	fmt.Fprintf(os.Stderr, "Usage: %s -host=ip:port -port=listen_port [option]\noption:\n", os.Args[0])
    	flag.PrintDefaults()
    }
    
    func Init() (string, int, string, string, error) {
    	var host string
    	var port int
    	var certFile string
    	var keyFile string
    
    	flag.StringVar(&host, "host", "", "Object server host(ip:port) for proxy")
    	flag.IntVar(&port, "port", 0, "Port to listen on.")
    	flag.StringVar(&certFile, "tlscert", "", "TLS cert file path")
    	flag.StringVar(&keyFile, "tlskey", "", "TLS key file path")
    	flag.Usage = usage
    	flag.Parse()
    
    	if host == "" || port == 0 {
    		return host, port, certFile, keyFile, fmt.Errorf("Not enough args!")
    	}
    
    	return host, port, certFile, keyFile, nil
    }
    
    func main() {
    	runtime.GOMAXPROCS(1) //设置cpu的核的数量,从而实现高并发
    
    	tcpAddress, port, certFile, keyFile, err := Init()
    	if err != nil {
    		usage()
    		os.Exit(1)
    	}
    
    	g_tcpAddress = tcpAddress
    
    	portString := fmt.Sprintf(":%d", port)
    	log.Printf("[INFO] starting server on port %d to proxy server [%s]\n", port, tcpAddress)
    
    	if certFile != "" && keyFile != "" {
    		err = http.ListenAndServeTLS(portString, certFile, keyFile, nil)
    	} else {
    		http.HandleFunc("/tztek/wstest", relayHandler)
    		err = http.ListenAndServe(portString, nil)
    	}
    	if err != nil {
    		log.Fatal(err)
    	}
    }

     

    展开全文
  • websockify:WebSockets支持任何应用程序/服务器 websockify以前的名称为wsproxy,是... 要使用WebSocket'wss://'URI方案对流量进行加密,您需要生成证书和密钥以供Websockify加载。 默认情况下,Websockify加载证书
  • WebsocketTCP的区别

    千次阅读 2021-05-22 10:05:38
    按照OSI网络分层模型,IP是网络层协议,TCP是传输层协议,而...本质上来说,WebSocket是不限于HTTP协议的,但是由于现存大量的HTTP基础设施,代理,过滤,身份认证等等,WebSocket借用HTTP和HTTPS的端口。 由于使用H

    按照OSI网络分层模型,IP是网络层协议,TCP是传输层协议,而HTTP是应用层的协议。在这三者之间,SPDY和WebSocket都是与HTTP相关的协议,而TCP是HTTP底层的协议。

    WebSocket则提供使用一个TCP连接进行双向通讯的机制,包括网络协议和API,以取代网页和服务器采用HTTP轮询进行双向通讯的机制。

    本质上来说,WebSocket是不限于HTTP协议的,但是由于现存大量的HTTP基础设施,代理,过滤,身份认证等等,WebSocket借用HTTP和HTTPS的端口。

    由于使用HTTP的端口,因此TCP连接建立后的握手消息是基于HTTP的,由服务器判断这是一个HTTP协议,还是WebSocket协议。 WebSocket连接除了建立和关闭时的握手,数据传输和HTTP没丁点关系了。

    WebSocket也有自己一套帧协议。

    展开全文
  • 简单的websocket tcp代理。 Usage: ws-tcp-proxy <address> [flags] Flags: -a, --auto-cert string register hostname with LetsEncrypt -c, --cert string path to cert.pem for TLS -k, --key string path ...
  • Nginx 解决WebSocket TCP 转发问题
  • 通常,我们使用Nginx为后端WEB服务做反向代理或负载均衡,但如果我们的后端服务,并不是HTTP/HTTPS协议,而是TCP协议或WebSocket协议呢 最近遇到一个需求,我们的HTTPS以及MQTT服务端在海外云主机上,从大陆直连延时...
  • websockify:WebSockets对任何应用程序/服务器的支持websockify以前的名称为wsproxy,并且是noVNC项目的一部分。 在最基本的层次上,websockify只是将WebSockets流量转换为普通的套接字流量。 websockify:...
  • 用于 Websockify WebSocketTCP 代理/网桥的 Docker 映像 更多关于 Websockify 的信息,请查看官方项目页面: : 例子 # Expose local port 5900 through WebSocket on port 8080 docker run --...
  • HTTPS 代理-SNI Proxy-WebSocket 一直用sni proxy做...主要功能:HTTPS 转发、HTTPS反向代理、HTTPHTTPS、HTTPSHTTP 4。如果最后再加个参数”保存目录“,则所有转发的数据保存在该目录中,程序排错时比较有用
  • 详情见: ...sub=B79B7EF52C9D420F83D28E201B48FCD7 ...关于TCP/IP协议所处的位置,上层模型基于下层模型,也就是我们在使用HTTP协议时时基于TCP/IP实现的。 三次握手(建立连接),四次挥手(断开连接) ssl...
  • 一、WebSocket协议 WebSocket是HTML5下一种新的协议。 它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到...2. WebSocket需要像TCP一样,先建立连接,连接成功后才能相互通信。 WebSo...
  • 网页通常不能直接与tcp连接的设备直接通讯,虽然都是基于tcp,但是协议解析有点差别,通常是在服务器弄一个websocket代理,把tcp协议的数据websocket协议规范的数据,然后转发到真正的websocket服务器。...
  • (socket,netty)客户端访问代理1服务器,代理服务器1过网闸1访问代理2服务器,代理2服务器访问目标服务器成功返回数据后,过网闸2返回数据至代理1服务器,代理1服务器返回数据至客户端。 可用到功能(代理服务器,...
  • 作者:陈大大(cp)开发过程中第一次使用websocket,首先使用了平常的http协议...作用:主要用于服务端为TCP协议编写的socket,能解决负载均衡SLB使用http无法连接的websocket。 附件无法上传:、、、、、、、、、、
  • WebSocket协议提供标准化方法,可通过单个TCP连接在客户端和服务器之间建立全双工双向通信通道,交互始于一个HTTP请求,该请求使用标头 Upgrade 进行升级。 Upgrade: websocket Connection: Upgrade 4.1.1. ...
  • 将server标记为备用,当主server不可用时,将请求备用server backup # 将server标记为停止 down 7.websocket代理 http { upstream backend { server srv1.example.com; } server { listen 80; location ...
  • 与此同时随着互联网的发展在HTML5中提出了websocket协议,能更好的节省服务器资源和带宽并且服务器和浏览器能够双向实时通讯。为了能让用户体验传统客户端和web带来的即时通信结合的超爽体验,本次毕业设计将完成web...
  • TCP: 使用隧道流量混淆技术,将需要传递的数据放在 WebSocket 的有效载荷中,作为二进制帧传递。 UDP: 使用拟态流量混淆技术,将需要传递的数据混淆后传递与服务器。 关于本项目使用方法、详细设计介绍以及其他内容...
  • WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。 2.Nginx 简介 Nginx是一个反向代理服务器,所有的来自浏览器的请求必须经过...
  • 目前想实现一个HTTP代理服务,能够支持HTTP和Websocket代理。最开始的实现思路是使用Jetty服务+Http-proxy框架实现的,后来发现支持Websocket比较困难。换了另一种思路,使用Netty来实现。 github源码: ...
  • 实现了websocket rtsp proxy服务器,并附属了一个Nginx的Windows版本。可以直接用来替换streamdian的服务器。
  • WS 协议和 WSS 协议两个均是 WebSocket 协议的基础,前者是非安全的后者是安全的,连个相当于 http 和 https ,非安全的没用帧数,安全的需要 SSL 证书...其中 WSS 就是在 TLS 之上的 WebSocket (TSL 是升级版的 SS...
  • 【详细说明】nginx反向代理wss websocketnginx的配置文件新建配置文件【重要】检查配置文件格式测试wss websocket参考文章 nginx的配置文件 nginx的配置文件在其安装路径下的conf和conf.d中。 nginx配置文件的说明 #...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,739
精华内容 4,295
关键字:

websocket转tcp代理

友情链接: StudentScoreSys.rar