Error: write EPROTO 4455222784: Error: 1408F10B:SSL例程:ssl3_g



我有一个websocket服务器运行在后端使用ws nodejs库。当我试图从客户端连接到它时,我得到这个错误。

events.js:377
throw er; // Unhandled 'error' event
^
Error: write EPROTO 4455222784:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c:332:
at WriteWrap.onWriteComplete [as oncomplete] (internal/stream_base_commons.js:94:16)
Emitted 'error' event on WebSocket instance at:
at ClientRequest.<anonymous> (/Volumes/lilac/Projects/Projects/5. Fireplace/fireplace/node_modules/ws/lib/websocket.js:718:15)
at ClientRequest.emit (events.js:400:28)
at TLSSocket.socketErrorListener (_http_client.js:475:9)
at TLSSocket.emit (events.js:400:28)
at emitErrorNT (internal/streams/destroy.js:106:8)
at emitErrorCloseNT (internal/streams/destroy.js:74:3)
at processTicksAndRejections (internal/process/task_queues.js:82:21) {
errno: -100,
code: 'EPROTO',
syscall: 'write'
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! fireplace@0.1.0 dev: `next dev`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the fireplace@0.1.0 dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/debabrata/.npm/_logs/2021-08-04T07_56_05_447Z-debug.log
下面是在服务器上运行的代码:
import { createServer } from "http"                                   
import { WebSocketServer } from "ws"                                  
const server = createServer()                                         
const wss = new WebSocketServer({ server })                           


server.listen("8080", () => {                                         
console.log("Server listening on port 8080")                      
})                                                                    

wss.on("connection", (ws, req) => {                                   
ws.on("open", () => console.log("connection open"))               
ws.on("close", () => console.log("connection closed"))                                                                       
})
客户端代码(Next.js)
import WebSocket from 'isomorphic-ws'                                   
import {useEffect} from 'react'                                         
   
const ws = new WebSocket("wss://localhost:8080/")                       
  
const Page = () => {                                                   
  
useEffect(() => {                                                   
ws.onopen = () => {                                             
console.log("connection open")                              
}                                                               
})                                                                  
 
return (                                                            
<div>                                                           
</div>                                                          
)                                                                   
}                                                                       
export default Page

我还应该提到,在构建这个时,我必须更新npm和node的版本。这会造成问题吗?如何解决这个问题?

我又回头看。如果我连接到ws://localhost:808

您的localhost URL只能与http一起工作,除非您获得由认可您的localhost连接的CA(证书颁发机构)签名的TLS证书。如果你还没有wsshttp不能使用://localhost:{港口}自:

  • wss只连接https
  • web连接http

反之亦然:

  • https只接受wss
  • http只接受ws

在这里也有描述:ws和wss之间的区别?

最新更新