Skip to content

Instantly share code, notes, and snippets.

@sassembla
Last active December 12, 2015 01:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sassembla/4692531 to your computer and use it in GitHub Desktop.
Save sassembla/4692531 to your computer and use it in GitHub Desktop.
【msgpack ハッカソンの産物】 ログファイル > node tail > (msgpack pack) WebSocket (msgpack unpack) > SublimeTextのコンソールに表示 用途:Unityのコンソールとか、エラー解析した行データをSTのコードの上に表示したり。
var WebSocket = require('ws');
var assert = require('assert');
var msgpack = require('msgpack');
var ws = new WebSocket('ws://127.0.0.1:8823/');
Tail = require('tail').Tail;
tail = new Tail("/Users/sassembla/Library/Logs/Unity/Editor.log");
ws.on('open', function() {});
tail.on("line", function(data) {
ws.binaryType = 'arraybuffer';
var str = {"mp" : data};
//msgpack
var bin = msgpack.pack(str);
var arraybuffer = new Uint8Array(bin);
ws.send(arraybuffer.buffer, {binary:true});
});
ws.on('message', function(data, flags) {});
@sassembla
Copy link
Author

2つ問題があって、nodeで動くWebSocketClientを使っていたのだけれど、こいつが
・送付物の判定を自動でしていた
→ので、line12 ws.binaryType = 'arraybuffer';は意味が無かった。
・判定が間違ってて、常にopcode = 0x1 textで送ってた。
という感じだった。

調整したところ問題なく動作。

@sassembla
Copy link
Author

教えてもらったところ、binaryTypeの指定方法を間違えていた。
line18 {binary:true} を指定する事で、binaryとして送付できた。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment