websocket服务器无响应,WebSocket服务器因某些原因无法正常工作(WebSocket server not working for some reasons)...

时间:2025-03-08 10:05:03

WebSocket服务器因某些原因无法正常工作(WebSocket server not working for some reasons)

我尝试使用ws创建一个非常简单的服务器,当我运行服务器node 并且我在我的浏览器中午餐localhost:8080时,我的控制台中没有任何内容。

我应该看到client connected on localhost:8080打印到控制台

-

const WebSocketServer = require('ws').Server;

const wss = new WebSocketServer({port: 8080});

const onConnect = wss => ('client connected on localhost:8080');

.fromEvent(wss, 'connection')

.subscribe(onConnect);

I tried to create a very simple server using ws, When i run the server node and i lunch localhost:8080 in my browser nothing appear in my console.

i should see client connected on localhost:8080 printed to the console

-

const WebSocketServer = require('ws').Server;

const wss = new WebSocketServer({port: 8080});

const onConnect = wss => ('client connected on localhost:8080');

.fromEvent(wss, 'connection')

.subscribe(onConnect);

原文:/questions/37480475

更新时间:2020-09-13 19:09

最满意答案

您无法通过直接在浏览器中打开它来连接到WebSocket。 您应该使用某个HTML页面创建HTTP服务器和响应。 在此HTML页面中,您应该包含连接到WebSocket服务器的javascript:

var socket = new WebSocket("ws://localhost:8080");

You can't connect to WebSocket by open it directly in a browser. You should create HTTP server and response with some HTML page. In this HTML page you should include javascript that connects to your WebSocket server:

var socket = new WebSocket("ws://localhost:8080");

相关问答

为了证明接收到握手,服务器必须获取两条信息并将它们组合以形成响应。 第一条信息来自| Sec-WebSocket-Key | 客户端握手中的头字段: Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==

具体而言,如上例所示,| Sec-WebSocket-Key | 标题字段的值为“dGhlIHNhbXBsZSBub25jZQ ==”,服务器 将串联字符串“258EAFA5-E914-47DA-95CA-C5AB0DC85B11” 形成字符串“dGhl

...

我找到了解决方法。 我已经修改了我的,现在它可以工作: import os

("DJANGO_SETTINGS_MODULE", "")

# This application object is used by any WSGI server configured to use this

# file. This includes Django's development server, if the WSGI

...

好吧,就我而言, RewriteBase /元素解决了这个问题。 如果有人因为shauninmann视网膜代码而遇到这个问题,我就把它留在那里。

Options -MultiViews

RewriteEngine on

RewriteBase /

RewriteCond %{HTTP_COOKIE} HTTP_IS_RETINA [NC]

RewriteCond %{REQUEST_FILENAME} !@2x

RewriteRule ^(.*)\

...

如果您的服务器正在侦听端口80上的连接,它是否在谈论http? 因为如果没有,不要在端口80上侦听:端口80已经建立为携带http流量。 下一步 - ipaddress和端口一起是端点的唯一标识符。 如果远程客户端通过端口80连接到您的服务器,而不是目标IP和端口,则没有其他信息表明网络层必须识别哪个应用程序(在端口80上侦听)应该获得该数据包。 鉴于配置多个IP地址非常困难 - 在NAT上是不可能的 - 将数据包路由到正确的侦听器的唯一信息就是端口。 所以你不能让两个应用程序在同一个端口上侦听。

...

您无法通过直接在浏览器中打开它来连接到WebSocket。 您应该使用某个HTML页面创建HTTP服务器和响应。 在此HTML页面中,您应该包含连接到WebSocket服务器的javascript:

var socket = new WebSocket("ws://localhost:8080");

You can't connect to WebSocket by open it directly in a browser. You should crea

...

所以我通过握手解决了我的特殊问题,而且非常无聊。 我需要两套“\ r \ n”才能完成握手。 所以为了解决我上面描述的握手问题(Javascript WebSocket没有进入OPEN状态)我需要对我的服务器端PHP进行以下更改(注意最后的\ r \ n \ r \ n,doh) : function dohandshake($user,$buffer){

// getheaders and calcKey are confirmed working, can provide source

...

是。 独立的WebSocket服务器通常可以在任何端口上运行。 浏览器客户端打开与非HTTP(S)端口上的服务器的WebSocket连接没有问题。 默认端口为80/443的主要原因是它们是最可靠的大规模使用端口,因为它们能够遍历阻止所有其他端口上所有流量的许多企业防火墙。 如果这对您的受众来说不是问题(或者您有基于HTTP的回退),那么为WebSocket服务器使用备用端口是完全合理的(并且更容易)。 另一种选择是使用80/443端口,但使用单独的IP地址/主机名。 Yes. A standalo

...

Tyrus抱怨Connection: keep-alive, Upgrade header。 Firefox在这里没有做错任何事。 关于如何处理Connection标头,Tyrus过于严格,没有遵循WebSocket规范( RFC-6455 )。 RFC 4.1中的RFC规定: 6. The request MUST contain a |Connection| header field whose value

MUST include the "Upgrade" tok

...

说实话,我不能100%确定地说这是什么,但我有一个非常强烈的怀疑。 我的代码中包含了太多的命名空间,我相信在编译器等实际运行时会出现一些混乱。 显然,和SignalR的命名空间都包含WebSocketHandler。 虽然我不知道SignalR的所有细节,但看起来THAT命名空间中的WebSocketHandler并不意味着在SignalR之外使用。 我相信这个类正在被引用,而不是中的那个,因为它现在起

...

您应该使用websocket处理程序,而不是请求处理程序,尝试使用此示例 You should use the websocket handler, not the request handler, try with this example