Comments (4)
Hi @ruspaul013 Thanks for reaching out and sorry for the long delay in my response. We had lately another Node related issue and this one felt of the radar. Will pick it up again.
You can have a look at the test application posted here https://github.com/nginx/unit/blob/master/test/node/loader/es_modules_websocket/app.mjs
This test makes use of the loader you are using as well. The loader configuration can be found here
https://github.com/nginx/unit/blob/master/test/unit/applications/lang/node.py
Copied from our tests, can you give this a try?
import http from "http"
import websocket from "websocket"
let server = http.createServer(function() {});
let webSocketServer = websocket.server;
server.listen(8080, function() {});
var wsServer = new webSocketServer({
maxReceivedMessageSize: 0x1000000000,
maxReceivedFrameSize: 0x1000000000,
fragmentOutgoingMessages: false,
fragmentationThreshold: 0x1000000000,
httpServer: server,
});
wsServer.on('request', function(request) {
var connection = request.accept(null);
connection.on('message', function(message) {
if (message.type === 'utf8') {
connection.send(message.utf8Data);
} else if (message.type === 'binary') {
connection.send(message.binaryData);
}
});
connection.on('close', function(r) {});
});
However as you can see we are using different imports. Can you try to use
import http from "http"
import websocket from "websocket"
as well? We will have to play around with ws
to see why and where we have issues with that.
from unit.
Adding some info to the @tippexs reply. We do support only websockets for now. So you if you rewrite you demo app to something like:
server = require('http').createServer(function() {});
webSocketServer = require('websocket').server;
server.listen(3010, function() {});
var wsServer = new webSocketServer({
maxReceivedMessageSize: 0x1000000000,
maxReceivedFrameSize: 0x1000000000,
fragmentOutgoingMessages: false,
fragmentationThreshold: 0x1000000000,
httpServer: server,
})
var clients = [];
wsServer.on('request', request => {
var connection = request.accept(null);
console.log('New client connected!');
clients.push(connection);
connection.send('connection established');
connection.on('message', data => {
clients.forEach(client => {
console.log(`distributing message: ${data}`)
if (data.type === 'utf8') {
client.send(data.utf8Data);
} else if (data.type === 'binary') {
client.send(data.binaryData);
}
})
})
connection.onerror = function () {
console.log('websocket error')
}
connection.on('close', () => console.log('Client has disconnected!'));
})
then it should work with our Node module.
from unit.
@andrey-zelenkov thanks for adding this. I think we can be more explicit about what websockets
and ws
is and what we support. A setense should be enough I guess.
from unit.
Hello @tippexs @andrey-zelenkov !
I know that websocket
is working ( I made a demo app using it ) but it's complicated to change from ws
to websocket
for what I need. I am interested if do you plan any support for ws in the future.
from unit.
Related Issues (20)
- nginx unit php server stops responding when using supervisor HOT 2
- BUG: Environment Variables not passed to Wasm Applications HOT 4
- Error: Cannot find module 'unit-http/loader' HOT 3
- Error 503, PHP HOT 8
- [Feature Request] Basic Authentication for Control Socket HOT 3
- CLI: subcommand for saving configuration HOT 3
- CLI: deploy configuration to many instances HOT 3
- CLI: SSH Support HOT 4
- Unit is not compiled with php, njs and wasm-wasi-component HOT 5
- Node.js: Unable to run due to Server this.on is not a function HOT 4
- "Waiting for Server Response" time consistently different depending on POST DATA Length? HOT 9
- http2 on; doesnt work as expected HOT 2
- RHEL Packages: GPG check fails when explicitly enabled HOT 9
- Query control API to show the loaded modules HOT 9
- Change server name header HOT 1
- Add error code and error message as variables at error page HOT 1
- Docker: for python based images, use the -slim version HOT 14
- Building Containers for amd64 on ARM instances fails HOT 5
- Crypto HOT 2
- Coredump if port 443 is occupied by another process ( Almalinux 9 ) HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from unit.