websocket 服务器怎么启动
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了websocket 服务器怎么启动相关的知识,希望对你有一定的参考价值。
安装好nodejs之后,我们需要安装“ws”,也就是我们的websocket实现,安装方法很简单,在终端或者命令行中输入:npm
install
ws
,等待安装完成就可以了。
接下来,我们需要启动我们的websocket服务。首先,我们需要构建自己的http服务器,在nodejs中构建一个简单的http服务器很简单,so
easy。代码如下:
var
app
=
http.createserver(onrequest
).listen(
8888
);
onrequest()作为回调函数,它的作用是处理请求,然后做出响应,实际上就是根据接收的url,在服务器上查找相应的资源,最终返回给浏览器。
在构建了http服务器后,我们需要启动websocket服务,代码如下:
var
websocketserver
=
require('ws').server;
var
wss
=
new
websocketserver(
server
:
app
);
从代码中可以看出,在初始化websocket服务时, 参考技术A 如何创建使用SuperWebSocket一个WebSocket的服务器
这里WebSocketServer对象通过Setup方式对要侦听的IP及端口进行了设置。然后使用Start方法启动侦听。
Setup方法有4种重载,但是我们通常用到的只有设置IP和端口,IP为string类型,如果传入的字符串无法被转换为支持的IP格式,Setup方法会返回false表示设置失败。
WebSocketServer还提供了4个事件用以管理与客户端的连接、断开、和接受消息动作。新版本的WebSocket支持传送的数据格式有
“文本”
和
“二进制”两种,NewMessageReceived事件用于处理文本类型的消息,NewDataReceived事件用于处理二进制类型的消息。
无法启动连接:错误:WebSocket 连接失败
【中文标题】无法启动连接:错误:WebSocket 连接失败【英文标题】:Failed to start the connection: Error: WebSocket failed to connect 【发布时间】:2022-01-09 22:29:55 【问题描述】:错误:无法启动连接:错误:WebSocket 无法启动 连接。在服务器上找不到连接,要么 端点可能不是 SignalR 端点,连接 ID 不是 存在于服务器上,或者存在阻止 WebSockets 的代理。如果你 让多台服务器检查是否启用了粘性会话。
WebSocketTransport.js:49 WebSocket 连接到 'ws://xxxxxx/production/web-services/hubs/spreadhub' 失败:
Angular.ts
ngOnInit(): void
// For signalR Hub connection
this.connection = new HubConnectionBuilder()
.withUrl('http://xxx.xxx.com/production/web-services/hubs/spreadhub', // localhost from **AspNetCore3.1 service**
skipNegotiation: true,
transport: signalR.HttpTransportType.WebSockets
)
.build();
this.connection.on('dataReceived', (data: string) =>
var model = JSON.parse(data);
);
this.connection.start().then(() => // to start the server
console.log('server connected!!!');
).catch(err => console.log(err));
【问题讨论】:
你在哪里运行的?在linux还是windows上?我也面临同样的问题。我在 httpd 和 kestrel 上。我认为这与 httpd 中不允许或转发到 kestrel 的 Web 套接字连接有关。 windows平台 对我来说,问题在于我们的流量位于导致问题的代理后面。这个答案帮助了我:***.com/a/68732723/8644294 【参考方案1】:您不需要指定完整的 url,只需要指定您要连接到的集线器...假设您的集线器名称是 spreadhub,您只需要:
this.connection = new HubConnectionBuilder()
.withUrl('https://localhost:5001/spreadhub', // localhost from **AspNetCore3.1 service**
skipNegotiation: true,
transport: signalR.HttpTransportType.WebSockets
)
.build();
在服务器上,如果部署到 azure,别忘了打开 websockets 像:
【讨论】:
本地服务在我们这边运行良好。在线服务出现问题以上是关于websocket 服务器怎么启动的主要内容,如果未能解决你的问题,请参考以下文章