ws

一个高并发的测试websocket脚本

蹲街弑〆低调 提交于 2019-11-29 01:28:05
一个高并发的测试websocket脚本 根据最近公司上线一个直播项目,但是有一天测试那边一脸苦逼的来找到我,问我有什么好工具可以实现高并发的测试,他使用jmeter限制了400个并发数(个人没去研究过不知道是否真的限制),后来我第一时间想到python写一个脚本,也没想多小就答应帮他搞一个测试脚本。 首先整理思: 要实现高并发不到两点 多进程 多线程 首先安装先要环境: pip install websocket pip install threadpool pip install websocket-client pip install multiprocessing 直接上脚本: #!/usr/bin/python #-*- coding:utf-8 -*- #__author__ == 'chenmingle' import websocket import time import threading import json import multiprocessing from threadpool import ThreadPool, makeRequests #修改成自己的websocket地址 WS_URL = "wss://ws.test.com/" #定义进程数 processes=5 #定义线程数(每个文件可能限制1024个,可以修改fs.file等参数)

语音识别—前端录音上传服务器进行语音识别

房东的猫 提交于 2019-11-28 07:20:29
采用前端录音,Websocket搭建Node服务器,音频对象Blob使用Websocket传给后端服务器后写入本地音频文件,然后调用百度AI语音识别本地音频文件,最后将识别结果传给前端显示。 百度语音识别 查看文档知道了我想要的信息,如果想要实现实时语音识别、长时间段的语音、唤醒词功能、语义解析功能,需要使用 Android 、 IOS SDK 或者 Linux C++ SDK 版本,而我使用的 Nodejs SDK 是不支持的。 1、规格参数要求 语音时长上线为60s,超出讲返回错误 原始录音文件为 pcm 、 wav 或者 amr 格式,不区分大小写,推荐使用 pcm 录音采样率为16000,声道为单通道 支持普通话、英文、粤语、四川话 项目结构 调用百度AI平台语音识别的 Nodejs SDK ,查看 文档 快速入门,可以查看如何调用。 首先将 nodejs-sdk 下载下来,下载后将目录里的 speech 文件夹拷贝到你的项目文件夹中,其中 assets 是存放录音音频的地方,然后进入 node 文件夹下的位置进行安装依赖包: npm install 我的项目文件夹目录如下: audio_asr_baidu ├─ package-lock.json └─ speech ├─ .gitignore ├─ assets │ ├─ 16k_test.pcm │ └─

nodejs之websocket聊天室

痴心易碎 提交于 2019-11-28 02:44:47
前端部分 <!DOCTYPE html> <html lang="cn"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> *{margin:0;padding: 0;} html,body{height:100%;} /* 聊天室 */ main{height:100%; background: green; display: none;} main .header{ height: 10%; background: #000; color: #fff; text-align: center; } main .header{display: flex;justify-content: center;align-items: center;} main .content{ height: 80%; color:#fff; } main .footer{ height: 10%; background: #fff; } main .footer{ display:

前端通信

元气小坏坏 提交于 2019-11-27 22:09:12
1. 通信有两个端 服务端 客户端 Node.js提供的通信方案 //- 客户端 // 引入net模块 const net = require( 'net' ) const socket = new net.Socket() // socket是用于连接客户端和服务端 const PORT = 5000 const HOST = '127.0.0.1' socket.connect(PORT,HOST,() => { socket.write('我上线了') // write 是发送给服务端的话 }) 设置客户端可见数据 socket.on('data', (msg) => { console.log(msg.toString()); }) socket.on('error', () => { console.log(error) }) 设置下线退出效果 socket.on('data', (msg) => { console.log(msg.toString()); say() }) socket.on('error', () => { console.log(error) }) socket.on('close', () => { console.log('下线了') }) const rl = readline.createInterface({ input: process

WebSocketSharp 创建客户端和服务端

自作多情 提交于 2019-11-27 20:50:15
这里没有对onOpen、onClose、onError做案例,生产环境需要具备。 1.客户端 只推送不接收数据 创建WebSocketClient类 1 class WebSocketClient 2 { 3 WebSocket ws; 4 string host; 5 string port; 6 public WebSocketClient() 7 { 8 string[] tcpPoint = XMLHelper.getArrayHost("/host/tcphost"); 9 host = tcpPoint[0]; 10 port = tcpPoint[1]; 11 ws = new WebSocket("ws://" + host + ":" + port); 12 ws.Connect(); 13 } 14 15 public bool ConnState() 16 { 17 if (ws.ReadyState==WebSocketState.Connecting||ws.ReadyState==WebSocketState.Open) 18 { 19 return true; 20 } 21 return false; 22 } 23 24 public void SendData(string json) 25 { 26 ws.Send(json); 27 } 28

剑指offer:顺时针打印矩阵

瘦欲@ 提交于 2019-11-27 07:39:11
题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 解题思路 往res中放入【左到右】的值; 往res中放入【上到下】的值; 往res中放入【右到左】的值; 往res中放入【下到上】的值; 需要设置好边界,这份代码有些案例会多出来一些值,但return res[:w*h] #len(matrix) 就可以。 # -*- coding:utf-8 -*- class Solution: # matrix类型为二维列表,需要返回列表 def printMatrix(self, matrix): # write code here res=[] if len(matrix)==0: return res elif len(matrix)==1: return matrix[0] elif len(matrix)==2: res.extend(matrix[0]) res.extend(matrix[1][::-1]) return res w = len(matrix[0]) h = len(matrix) hs=0 ws=0 for i in range(int

一步一步学WebSocket (一) 初识WebSocket

瘦欲@ 提交于 2019-11-26 21:44:37
  众所周知,Http协议是无状态的,并且是基于Request/Response的方式与服务器进行交互,也就是我们常说的单工模式。但是随着互联网的发展,浏览器与服务端进行双向通信需求的增加,长轮询向服务器以获取最新数据并实现推送效果的方式已经越来越不能满足我们。Html5标准的制定,也为我们提供了浏览器与服务端的双工通信协议WebSocket。   WebSocket协议的格式为 "ws://IP:Port" 或者“wss://IP:Port"。其中wss表示进行加密传输的websocket协议。   WebSocket协议与传统的Socket协议一样,都需要进行“握手”。但是WebSocket的“握手”阶段是通过Http协议进行的,“握手”行为通过Request/Response的Header完成,只需要交换很少的数据,便可以创建基于TCP/IP协议的双工通道。下面我们来看一下Fiddler截取到的WebSocket握手请求      通过Fiddler我们可以看到,在握手请求时,客户端向服务端发送了一个Get请求,并且在请求的头中增加了这么几个Key   Origin:http://IP:Port 表示客户端的地址   Connection:Upgrade / Upgrade:WebSocket 表示本次请求是要进行WebSocket的握手动作   Sec-WebSocket

php基于swoole扩展的WebSocket

谁说我不能喝 提交于 2019-11-26 14:13:02
php的swoole的扩展可以实现WebSocket通信,方法如下 1、php添加swoole扩展; 一:两种安装方式: 1》编译安装: 1>wget http://pecl.php.net/get/swoole-1.9.6.tgz 或者 wget http://www.taikongliu.com/swoole/swoole-1.7.6-stable.tar.gz //下载swoole 2>tar -zxvf swoole-1.7.6-stable.tar.gz //解压swoole 3>cd swoole-src-swoole-1.7.6-stable/ //进入swoole 4>/phpstudy/server/php/bin/phpize //生成configure 5>./configure --with-php-config=/phpstudy/server/php/bin/php-config //编译 6>make && make install //安装 7>cd /phpstudy/server/php/lib/php/extensions/no-debug-non-zts-20121212 //查看是否安转上了swoole.so (注意:此文件下边都是你安装的拓展) 8>vim /phpstudy/server/php/etc/php.ini //在php

Python 语音识别

霸气de小男生 提交于 2019-11-26 01:22:49
调用科大讯飞语音听写,使用 Python 实现语音识别,将实时语音转换为文字。 参考这篇 博客 实现的录音,首先在官网下载了关于语音听写的 SDK ,然后在文件夹内新建了两个 .py 文件,分别是 get_audio.py 和 iat_demo.py ,并且新建了一个存放录音的文件夹 audios ,文件夹内存放录音文件 input.wav ,我的整个文件目录如下: asr_SDK(文件名) ├─ Readme.html ├─ audios │ └─ input.wav(存放音频) ├─ bin │ ├─ gm_continuous_digit.abnf │ ├─ ise_cn │ ├─ ise_en │ ├─ msc │ ├─ msc.dll (因为我是32位的python,所以用的这个动态链接库) │ ├─ msc_x64.dll │ ├─ source.txt │ ├─ userwords.txt │ └─ wav ├─ doc ├─ get_audio.py ├─ iat_demo.py ├─ include ├─ libs ├─ release.txt └─ samples 一、录音 这里使用的是 pyaudio 进行录音,需要下载相关的轮子,具体可参考我的另一篇 博客 。然后根据自己的需要进行了修改, gt_audio.py 全部代码如下: import pyaudio

WebSocket加入心跳包防止自动断开连接

雨燕双飞 提交于 2019-11-25 20:17:36
var userId=$("#userId").val(); var lockReconnect = false; //避免ws重复连接 var ws = null; // 判断当前浏览器是否支持WebSocket var wsUrl = serverConfig.cyberhouse_ws+userId; createWebSocket(wsUrl); //连接ws function createWebSocket(url) { try{ if('WebSocket' in window){ ws = new WebSocket(url); }else if('MozWebSocket' in window){ ws = new MozWebSocket(url); }else{ layui.use(['layer'],function(){ var layer = layui.layer; layer.alert("您的浏览器不支持websocket协议,建议使用新版谷歌、火狐等浏览器,请勿使用IE10以下浏览器,360浏览器请使用极速模式,不要使用兼容模式!"); }); } initEventHandle(); }catch(e){ reconnect(url); console.log(e); } } function initEventHandle() { ws