英文:
How can I get a simple Web socket up and running in my Node app
问题
I have a very basic Node.js app running on my local machine, accessible at http://localhost:3000/. All working fine.
我在本地机器上运行了一个非常基本的Node.js应用程序,可以通过http://localhost:3000/访问。一切都正常。
I want to add a web socket server to the app and then to make a connection to it from a local html page.
我想向应用程序添加一个WebSocket服务器,然后从本地HTML页面连接到它。
I have followed code examples from the internet but am having no luck. I never see the console.log that I expect to see on the 'connection' event.
我已经遵循了来自互联网的代码示例,但没有成功。我从未看到我期望在“connection”事件上看到的console.log。
In app.js I have the following code:
在app.js中,我有以下代码:
var WebSocketServer = require('ws').Server;
My existing app.listen call looks like this:
我的现有app.listen调用如下:
const port = process.env.PORT || 3000;
var m_server = app.listen(port, () => {
console.log("Server online on http://localhost:" + port);
});
I use the return value of the above in the following call:
我在以下调用中使用了上述代码的返回值:
var m_webSocketServer = new WebSocketServer( { server: m_server, autoAcceptConnections: true} );
m_webSocketServer.on('connection', function (ws) {
console.log("A connection");
});
console.log("At End");
这是服务器端的内容。
In my client web page body I have in the onload event:
在我的客户端网页主体中,我在onload事件中有以下内容:
alert("Here");
this.m_websocketConnection = new WebSocket('wss://localhost:3000');
alert(this.m_websocketConnection);
I had hoped to see the "A connection" message from the server side, I do not, I just see "At End" followed by "Server online on http://localhost:3000" in the console.
我希望从服务器端看到“A connection”的消息,但实际上没有看到,我只在控制台中看到“At End”后面跟着“Server online on http://localhost:3000”。
and in the browser I see "Here" and "[object WebSocket]"
在浏览器中,我看到“Here”和“[object WebSocket]”。
Can anyone help me out? Thanks.
有人可以帮助我吗?谢谢。
英文:
I have a very basic Node.js app running on my local machine, accessible at http://localhost:3000/ All working fine.
I want to add a web socket server to the app and then to make a connection to it from a local html page.
I have followed code examples from the internet but am having no luck. I never see the console.log that I expect to see on the 'connection' event.
In app.js I have the following code:
var WebSocketServer = require('ws').Server;
My existing app.listen call looks like this:
const port = process.env.PORT || 3000;
var m_server = app.listen(port, () => {
console.log("Server online on http://localhost:" + port);
});
I use the return value of the above in the following call:
var m_webSocketServer = new WebSocketServer( { server: m_server, autoAcceptConnections: true} );
m_webSocketServer.on('connection', function (ws)
{
console.log("A connection");
}
);
console.log("At End");
That's it on the server side.
In my client web page body I have in the onload event:
alert("Here");
this.m_websocketConnection = new WebSocket('wss://localhost:3000');
alert(this.m_websocketConnection);
I had hoped to see the "A connection" message from the server side, I do not, I just see "At End" followed by "Server online on http://localhost:3000" in the console.
and in the browser I see "Here" and "[object WebSocket]"
Can anyone help me out? Thanks.
答案1
得分: 1
Update: 在我提出这个问题不到一分钟后,我找到了问题!
在客户端这边,我将:
new WebSocket('wss://localhost:3000');
更改为:
new WebSocket('ws://localhost:3000');
谢谢。
英文:
Update: less that a minute after composing this question I found the problem!
On the client side I changed:
new WebSocket('wss://localhost:3000');
to
new WebSocket('ws://localhost:3000')
Thanks.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论