웹사이트 검색
저는 Node.js를 사용하여 Express와 Socket.io로 작성된 웹 앱이 있습니다. 이 앱은 로컬호스트에서는 아주 잘 작동하지만, EC2 서버에 배포하면 약 20초 정도 연결되었다가 끊어지고, 다시 연결되는 식으로 반복됩니다.
노드 콘솔에서 다음과 같이 오류가 발생합니다
warn - websocket connection invalid info - transport end서버
app = express() server = http.createServer(app) io = require('socket.io').listen(server)클라이언트
socket = io.connect()나는 문제가 내 코드에 있는 것이 아님을 알고 있다. 왜
더 많은 것을 읽으십시오 →
저는 Firefox, Chrome, Safari용 브라우저 확장 기능을 작성하고 있습니다. Safari 확장에서 특정 포트에서 서버가 수신 대기하고 있지 않은 상태에서 WebSocket 서버에 연결을 시도할 때, 제 Safari 확장 기능은 예외를 발생시키지도 않고, onerror를 호출하지도 않습니다. 대신, Safari 확장의 onclose 핸들러가 호출됩니다. 또한 콘솔에서 다음 메시지가 표시되는 것을 보고 있습니다:
[E 더 많은 것을 읽으십시오 →저는 이미지를 보내기 위해 Node.js 웹소켓 서버와 클라이언트를 사용하고 있습니다. 문제는 클라이언트가 고해상도(예: 512 x 512 이상) 또는 큰 용량(예: 거의 50KB 이상) 이미지를 보낼 때 자동으로 연결이 끊어진다는 점입니다.
참고: 크기와 치수가 더 작으면 전송할 수 있습니다.
function getBase64Image(img) { var canvas = document.createElement("canvas"); canvas.width = img.width; canvas.height = img.height; var ctx = canvas.getContext("2d"); ctx.drawImage(img, 0, 0); var dataURL = canvas.toDataURL("image/png"); return dataURL; } function sendImage(){ var img = get 더 많은 것을 읽으십시오 →저는 Node.js용 WebSocket 라이브러리 ws를 사용하고 있으며, 서버에서 오류 이벤트를 시뮬레이션하여 제 오류 처리 코드를 실행하려고 하고 있습니다:
ws.on('error', function(e) { console.log("error occured"); });저는 on('message') 이벤트에서 정의되지 않은 변수를 참조하려고 했지만, 그로 인해 서버 전체가 충돌했고 'error' 이벤트는 전혀 발생하지 않았습니다.
누군가 서버에서 ws 오류 이벤트를 시뮬레이션하는 방법을 알려줄 수 있나요?
감사합니다!
이벤트를 수동으로 발생시키는 것도 작동해야 합니다 (ws.emit('error', new Error('foo'))) 마찬가지로 error
더 많은 것을 읽으십시오 →웹소켓을 사용하는 웹사이트에 접속하면 Google 개발자 도구로 프레임을 확인할 수 있습니다.
웹소켓 URL의 데이터
그래서 저는 같은 데이터를 프로그램(JS, C#)에서 얻고 싶지만, 실제로 어떻게 해야 할지 전혀 모르겠습니다.
NodeJS로 http.request를 해보려고 했지만 http URL이 아니에요 :/ 샘플 JS 클라이언트를 만들어보려고 했지만 'key'가 있는 헤더를 보낼 수 없어서 데이터를 가져올 수 없었어요.
헤더
그래서, 정말로 저를 도와줄 방법이 있길 바라며, 제 기본적인 영어 실력 때문에 죄송합니다 :(
WebSockets는 클라이언트와 서버 간에 상태를 유지하는 지속적인 연결을 구현하기 위한 표준 기술입니다. 자체 프로토콜 ws:// 와 wss://를 가지고 있습니다
더 많은 것을 읽으십시오 →저는 현재 Typescript로 Express와 Websockets를 사용하는 백엔드 서버를 만들고 있습니다. 높은 수준에서 제 문제는, 특정 라우트로 POST 요청을 받았을 때 그 라우트의 핸들러가 클라이언트 웹소켓에 메시지를 보내도록 만들고 싶다는 것입니다. 현재 저는 세 개의 파일을 가지고 있습니다: app.ts, conversationController.ts, 그리고 server.ts.
제가 구조를 짠 방식은 conversationController.ts가 제 라우트의 HTTP와 웹소켓 로직을 처리하고, app.ts가 그 컨트롤러를 사용하며 제 익스프레스 앱을 내보내고, server.ts가 HTTP 서버와 웹소켓 서버를 둘 다 생성하는 것입니다. 이해를 돕기 위해 제 코드를 보여드리니 어떤 일이 일어나고 있는지, 제가 무엇
더 많은 것을 읽으십시오 →저는 톰캣 클라이언트가 생성한 웹소켓에 연결하려고 하고 있습니다. 제가 보는 것은 ws://localhost:8080/cs-webapp/ws 인데, 연결을 시도하면 302 오류가 발생합니다. 여기 있는 다른 질문/답변은 적용되지 않습니다 :(
저는 제 컴퓨터에서 열린 포트 목록을 얻기 위해 다음 명령어를 사용하고 있으며, Tomcat과 관련하여 제가 보는 내용은 다음과 같습니다:
sudo lsof -PiTCP -sTCP:LISTEN java localhost:21179 (LISTEN) java *:63862 (LISTEN) java *:49190 (LISTEN) java *:8080 (LISTEN) java *:8009 (LISTEN) java TCP localhost:8005 (LISTEN) java TCP *:58083 (LISTEN)위의
더 많은 것을 읽으십시오 →
나는 nestjs를 사용하여 mean stack 애플리케이션을 만들고 있습니다. Nest js에서 나는 웹소켓을 사용하고 있습니다. Postman에서 웹소켓을 테스트하는 방법을 모릅니다. 보통 나는 Postman에서 테스트할 라우트 URL을 가지고 있으며 다음과 같은 출력 결과를 얻습니다: "http://localhost:3000/{routeUrl}" 하지만 소켓을 사용해서 어떻게 하는지 혼란스럽습니다.
예시 :
@WebS 더 많은 것을 읽으십시오 →저는 NestJs를 가지고 놀고 있는데 한 가지 문제에 막혔습니다. WebSocket 게이트웨이에서 예외를 던질 수가 없습니다.
모든 것이 이 문서 페이지에 따라 진행됩니다.
나는 포함하려고 시도했다
@UseFilters(new BaseWsExceptionFilter())하지만... 도움이 되지 않았어.
import { SubscribeMessage, WebSocketGateway, WebSocketServer, WsException, } from '@nestjs/websockets'; import { Client, Server } from 'socket.io'; @WebSocketGateway() export class EventsGateway { @WebSocketServer() server: Server; @SubscribeM 더 많은 것을 읽으십시오 →저는 Angular 9에서 간단한 웹소켓 연결을 작성했습니다. 이것은 예제 코드입니다:
import {Injectable} from '@angular/core'; import {webSocket} from 'rxjs/webSocket'; import {delay, retryWhen} from 'rxjs/operators'; @Injectable({ providedIn: 'root' }) export class WebSocketService { private host = 'ws://localhost:8080/test'; private isConnected = false; private ws = webSocket({ url: this.host, openObserver: { next: () => this.isConnected = true }, closeObserver: { nex 더 많은 것을 읽으십시오 →