ale*_*x10 0 javascript websocket node.js express
这是关于WS和的简单聊天express.js.我收到浏览器无法通过连接到服务器的错误websockets.
客户连接:
file: rtc.html
ws = new WebSocket('wss://' + window.location.hostname + '/wr' );
ws.onerror = (error) => { console.log(error); };
ws.onmessage = (message) => {
. . .
Run Code Online (Sandbox Code Playgroud)
服务器代码:
const express = require('express');
const http = require('http');
const WebSocket = require('ws');
const app = express();
app.get('/rtc', (req, res)=>{
res.sendFile('/home/user/dev/rtc.html');
});
const server = http.createServer(app);
const wss = new WebSocket.Server({ server:server, path: "/wr" });
. . .
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)
UPD:问题是由于我正在进行聊天webrtc和测试,Mozilla并且Mozilla没有连接就无法https连接但getUserMedia运行正常.有必要这样写:
var https = require('https');
var serv = https.createServer(serverConfig, app);
Run Code Online (Sandbox Code Playgroud)
改变自:
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)
至:
server.listen(3000);
Run Code Online (Sandbox Code Playgroud)
当您使用时app.listen(),它会创建一个新的http服务器,因此您连接的socket.io to永远不会启动.要完全理解app.listen(),它的代码如下所示:
app.listen = function(){
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
Run Code Online (Sandbox Code Playgroud)
因此,您可以看到它创建的是不同于您将webSocket服务器连接到的服务器的http服务器,因此其他的服务器从未启动过.
或者,你也可以这样做:
const server = app.listen(3000);
const wss = new WebSocket.Server({ server:server, path: "/wr" });
Run Code Online (Sandbox Code Playgroud)
并且,根本不创建自己的http服务器. app.listen()返回它创建的新服务器对象.
| 归档时间: |
|
| 查看次数: |
974 次 |
| 最近记录: |